- 1
[Opened] A basic gzip response
Posted by tudorilisoi on 11/11/2009 09:49
Hi, here's a basic gzip response Here's an example usage:
$rep = $this->getResponse('gzip'); $path=JELIX_APP_WWW_PATH.'some_file'; $rep->mimeType=files::getMimeType($path); $rep->content=file_get_contents($path); return $rep;
, and here's the gzipResponse.class.php code:
<?php class gzipResponse extends jResponse { /** * @var string */ protected $_type = 'gzip'; /** * text content * @var string */ public $content = ''; public $mimeType = ''; /** * output the content with the text/plain mime type * @return boolean true si it's ok */ public function output(){ global $gJConfig; if($this->hasErrors()) return false; if ((substr_count($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip'))) { $this->addHttpHeader('Content-Encoding','gzip'); $this->content=ob_gzhandler($this->content,5); } else { # code... } $this->addHttpHeader('Content-Type',$this->mimeType.';charset='.$gJConfig->charset,false); $this->_httpHeaders['Content-length']=strlen($this->content); $this->sendHttpHeaders(); echo $this->content; return true; } /** * output errors */ public function outputErrors(){ global $gJConfig; header("HTTP/1.0 500 Internal Server Error"); header('Content-Type: text/plain;charset='.$gJConfig->charset); if($this->hasErrors()){ foreach( $GLOBALS['gJCoord']->errorMessages as $e){ echo '['.$e[0].' '.$e[1].'] '.$e[2]." \t".$e[3]." \t".$e[4]."\n"; } }else{ echo "[unknow error]\n"; } } }
Of course, as I've also seen in ticket requests, the best way to gzip would be having an 'isGzip' flag in all the http response types
[Opened] Re: A basic gzip response
Posted by laurentj on 11/12/2009 00:04
thanks for this contribution, but as you said, "the best way to gzip would be having an 'isGzip' flag in all the http response types" (so in the jResponse class)
- 1