Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > Web Development
You last visited: Today at 11:42

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



[PHP] ob_gzhandler()

Discussion on [PHP] ob_gzhandler() within the Web Development forum part of the Coders Den category.

Reply
 
Old   #1
 
PseudoPsycho's Avatar
 
elite*gold: 1715
Join Date: Dec 2011
Posts: 672
Received Thanks: 207
Question [PHP] ob_gzhandler()

Hallo, Leute!
Ich habe mir heute einige PHP-Funktionen angesehen, für die ich bislang wenig Verwendung hatte.
Verwende ich:
PHP Code:
ob_start('ob_gzhandler'); 
alleine, wird die Datei komprimiert.

Verwende ich
PHP Code:
ob_start();
echo 
'Hallo, Welt!';
$inhalt=ob_get_contents();
ob_end_clean();
echo 
$inhalt
so steht mir die Variable $inhalt zur weiteren Bearbeitung zur Verfügung.

Nun zu meiner Frage:
Wenn ich
PHP Code:
ob_start('ob_gzhandler');
echo 
'Hallo, Welt!';
$inhalt=ob_get_contents();
ob_end_clean();
echo 
$inhalt
benutze, sollte ich eigentlich die Variable $inhalt mit der komprimierten Seite erhalten, doch stattdessen erhalte ich bei meinem Hoster einen 503-Fehler..?

Was mache ich also falsch und welche Alternativen habe ich (z.B. Variable nachträglich gzip-komprimieren)?
PseudoPsycho is offline  
Old 03/20/2012, 14:26   #2
 
Mashkin's Avatar
 
elite*gold: 44
Join Date: May 2010
Posts: 2,053
Received Thanks: 1,747
Quote:
Originally Posted by PseudoPsycho View Post
Nun zu meiner Frage:
Wenn ich
PHP Code:
ob_start('ob_gzhandler');
echo 
'Hallo, Welt!';
$inhalt=ob_get_contents();
ob_end_clean();
echo 
$inhalt
benutze, sollte ich eigentlich die Variable $inhalt mit der komprimierten Seite erhalten, doch stattdessen erhalte ich bei meinem Hoster einen 503-Fehler..?

Was mache ich also falsch und welche Alternativen habe ich (z.B. Variable nachträglich gzip-komprimieren)?
Bleibt der Fehler auch bestehen, wenn du das "echo $inhalt;" entfernst?
BTW: Ein Kommentar auf PHP.net sagt:
Quote:
if you use ob_start with a callback function as a parameter, and that function changes ob string (as in example in manual) don't expect that ob_get_contents will return changed ob.
it will work as you would use ob_start with no parameter at all. So don't be confused.
Also scheint es generell einen gewissen Konflikt mit Callback-Methoden zu geben...

Eine u. Umständen sogar bessere Methode ist Apache's "mod_deflate".
Hier mal ein kleins Beispiel für eine ".htaccess"-Datei inklusive Browser-Prüfung (manche Browser unterstützen deflate nicht oder nur teilweise):
Code:
<IfModule mod_deflate.c>
SetOutputFilter DEFLATE
BrowserMatch ^Mozilla/4         gzip-only-text/html
        BrowserMatch ^Mozilla/4\.0[678] no-gzip
        BrowserMatch \bMSIE             !no-gzip !gzip-only-text/html
</IfModule>[FONT=verdana]
[/FONT]
Mashkin is offline  
Thanks
1 User
Old 03/20/2012, 18:58   #3
 
PseudoPsycho's Avatar
 
elite*gold: 1715
Join Date: Dec 2011
Posts: 672
Received Thanks: 207
Hab' ne andere Möglichkeit gefunden...
Ich bearbeite einfach stattdessen die Variable $inhalt
mit dieser Funktion:
PHP Code:
function compress_gzip($tpl_source)
{
   
$compression_level   =   9;
   
   
$force_compession   =   false;  
   
   if( !
headers_sent() && extension_loaded('zlib') && (strstr($_SERVER['HTTP_ACCEPT_ENCODING'],'gzip') || $force_compession ))
{
$tpl_source gzencode($tpl_source$compression_level);
      
      
header('X-Compression: gzip');
      
header('Content-Encoding: gzip');
      
header('Vary: Accept-Encoding');
      
header('Content-Length: '.strlen($tpl_source));
            
}
   
return 
$tpl_source;

PseudoPsycho is offline  
Reply




All times are GMT +2. The time now is 11:42.


Powered by vBulletin®
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2024 elitepvpers All Rights Reserved.