Beetje een heel raar probleem waar ik niet uitkom na gezocht te hebben op het internet en verschillende codes met elkaar vergeleken te hebben. Ik zie er compleet niets fout aan. Onderstaande scriptje word geincluded bovenaan elke pagina. onderaan de php pagina roep ik de gzdocout() aan. Hij zou dan als ik met Internet Explorer of Firefox de pagina bezoek toch gewoon die comments weergeven. Als ik met Telnet kijk of de pag gezipped word zegt hij "ja", maar ik kan nergens terugzien hoeveel de pagina nu gekrompen is en of de pagina nu ook daadwerkelijk wel gezipped is verstuurd. Iemand enig idee wat er fout gaat? Ik zie dit soort scriptjes overal op het web staan, waaronder op de php.net site, het schijnt daar allemaal te werken...
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
| ob_start(); ob_implicit_flush(0); function CheckCanGzip(){ global $HTTP_ACCEPT_ENCODING; if (headers_sent() || connection_aborted()){ return 0; } if (strpos($HTTP_ACCEPT_ENCODING, 'x-gzip') !== false) return "x-gzip"; if (strpos($HTTP_ACCEPT_ENCODING,'gzip') !== false) return "gzip"; return 0; } /* $level = compression level 0-9, 0=none, 9=max */ function gzdocout($level=9,$debug=1){ $ENCODING = CheckCanGzip(); if ($ENCODING){ print "\n<!-- Use compress $ENCODING -->\n"; $Contents = ob_get_contents(); ob_end_clean(); if ($debug){ $s = $ENCODING; $s .= "\n<!--<p>Not compress length: ".strlen($Contents)." -->\n"; $s .= "\n<!--<br>Compressed length: ".strlen(gzcompress($Contents,$level)."-->"); $Contents .= $s; } header("Content-Encoding: $ENCODING"); print "\x1f\x8b\x08\x00\x00\x00\x00\x00"; $Size = strlen($Contents); $Crc = crc32($Contents); $Contents = gzcompress($Contents,$level); $Contents = substr($Contents, 0, strlen($Contents) - 4); print $Contents; print pack('V',$Crc); print pack('V',$Size); exit; }else{ ob_end_flush(); exit; } } ?> |