Phil: Datenkompressionssscript will nicht so ganz funzen

Beitrag lesen

Hi! Ich habe bei einem netten Menschen ein Datenkompressionsscript auf PHP-Basis bekommen. Eigentlich soll der Einbau recht einfach sein. Also daran liegt es nicht. Eher an der Funktion ;) Aber entweder bekomm ich eine 10-fache Ladezeit im Gegensatz zu vorher und eine leere Seite oder folgenden Fehler: Warning: Undefined index: HTTP_IF_NONE_MATCH in c:\apache\apache\htdocs\hpneu\compress.php on line 24

naja, die index.php: <?php if(!isset($_GET['site'])) {$_GET['site']="start";} include("compress.php"); ob_start(); ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>yubb.de - Die Webmaster-Community</title> ...metatags... <script src="js.js" type="text/javascript"> </script> <link rel="stylesheet" href="css.css" type="text/css"> </head> <body onLoad="javascript:frames();"> <table border="0" cellspacing="0" cellpadding="0" width="100%" align="center"> <tr> <td colspan="3"><img src="images/blank.gif" width="1" height="5" border="0" alt=""></td></tr> <tr> <td> </td> <td width="800"> <table border="0"> <colgroup><col width="120"><col width="100%"></colgroup> <tr><td colspan="2" bgcolor="#E9EBED"> <? include("header.php"); ?> </td></tr> <tr><td style="width:120px;" valign="top"> <? include("navi.php"); ?> </td><td valign="top" style="width:100%;" bgcolor="#F9F9F9"> <? include($_GET['site'].".php"); ?> </td></tr> <tr><td colspan="2"> <? include("footer.php"); ?> </td></tr> </table> </td> <td> </td> </tr> <tr> <td colspan="3"><img src="images/blank.gif" width="1" height="5" border="0" alt=""></td> </tr> </table> </body> </html> <? $buf = ob_get_contents (); ob_end_clean (); compressedOutput ($buf); ?>

die compress.php: <?php /**  * Gibt den Text in $page mit der in $c_level angegebenen Kompressionsstärke aus. Kann auch ein ETag erzeugen.  *  * @param string $page Der Text der ausgegeben werden soll.  * @param integer $c_level Wie stark soll komprimiert werden? Mögliche Werte sind 0 (garnicht) bis 9 (am stärksten).  * @param boolean $use_etag Soll ein ETag erzeugt werden oder nicht?  */ function compressedOutput ($page, $c_level = 5, $use_etag = true) {         // Je nach PHP-Version die benötigten Variablen aus der passenden         // Superglobalen holen.         if (phpversion () < '4.1.0')         {                 global $HTTP_SERVER_VARS;                 $user_agent      = $HTTP_SERVER_VARS['HTTP_USER_AGENT'];                 $accept_encoding = $HTTP_SERVER_VARS['HTTP_ACCEPT_ENCODING'];                 $if_none_match   = $HTTP_SERVER_VARS['HTTP_IF_NONE_MATCH'];         }         else         {                 $user_agent      = $_SERVER['HTTP_USER_AGENT'];                 $accept_encoding = $_SERVER['HTTP_ACCEPT_ENCODING'];                 $if_none_match   = $_SERVER['HTTP_IF_NONE_MATCH'];         }

$send_body = true;

if (extension_loaded ('zlib'))         {                 // Prüfen ob sich $c_level im gültigen Bereich befindet, falls                 // nicht $c_level anpassen.                 $c_level = (int)$c_level;                 if ($c_level < 0)                         $c_level = 0;                 elseif ($c_level > 9)                         $c_level = 9;

// Feststellen ob der Browser komprimierte Seiten verabeiten kann -                 // falls ja die Seite komprimieren und einen passenden Header                 // ausgeben.                 // Beim IE 4 nicht komprimieren, wegen einem Bug im selbigen.                 if (!eregi ('MSIE 4', $user_agent))                 {                         if (eregi ('gzip', $accept_encoding))                         {                                 if (eregi ('x-gzip', $accept_encoding))                                         header ('Content-Encoding: x-gzip');                                 else                                         header ('Content-Encoding: gzip');                                 $page = gzencode ($page, $c_level);                         }                         elseif (eregi ('deflate', $accept_encoding))                         {                                 header ('Content-Encoding: deflate');                                 $page = gzdeflate ($page, $c_level);                         }                         header ('Vary: Accept-Encoding');                 }         }

$md5checksum = md5 ($page);

// Wenn ein ETag erzeugt werden soll dieses erzeugen und auswerten.         if ($use_etag)         {                 $etag = '"' . $md5checksum . '"';                 header ('ETag: ' .  $etag);

if (count ($if_none_match) > 0)                 {                         $inm = explode (',', $if_none_match);                         foreach ($inm as $i)                         {                                 if (trim ($i) == $etag)                                 {                                         header ('HTTP/1.0 304 Not Modified');                                         $send_body = false;                                         break;                                 }                         }                 }         }

if ($send_body)         {                 header ('Content-MD5: ' . $md5checksum);                 header ('Content-Length: ' . strlen ($page));                 header ('Date: ' . gmdate ('D, d M Y H:i:s') . ' GMT');                 print $page;         } } ?>

Bitte geht nun nicht auf meine HTML-Fehler ein, darum kümmern wir uns wann anders (genauer: morgen ;), aber warum funktioniert das auf meinem lokalen Server nicht? Dieses ZLib oder wies heisst, habe ich aktiviert, daran liegts auch net. Oder liegts nur daran, dass ich mein lokal-PHP nicht geconfiggt hab und deswegen der parser extrem hart ist? Dankbar für jede Antwort http://www.yubb.de