php gzip compressie, vage tekens aan het eind

Pagina: 1
Acties:

  • cyco2437
  • Registratie: Januari 2001
  • Laatst online: 13-09-2025
hoi,

ik heb dus net php weer eens gecompiled met deze keer de optie --with-zlib er achter.

nu werkt eindelijk die compressie die je kan aanroepen met:
PHP:
1
<?<html><body><p>This should be a compressed page.</body></html><?phpob_start("ob_gzhandler");?>

de output werkt nu wel (als je namelijk "ob_sta.." boven aan zet krijg je ALLEEN MAAR rare tekens).

maar nu krijg ik alleen op het EINDE rare tekens.(op de plek waar het php/html document allang afgelopen is).
de uitvoer:
code:
1
This should be a compressed page. ÿÿ

de source:
code:
1
2
3
4
5
6
<html>
<body>
<p>This should be a compressed page.
</body>
</html>
       ÿÿ

please help me out here ;)
en nog een vraag (ik heb al gezocht en vond 1 soortgelijke vraag maar er was geen antwoord). als je de source van Tweakers.net opvraagt zie je code zoals deze:
code:
1
2
3
4
5
bgcolor=white><td bgcolor=#f6f6f5 class=b6 background='g/gradient/1.gif'>01-03-2002</td><td 
class=b6><a href='plan/153' class=l>Procase nieuwe sponsor
Tweakers.net serverpark</a> (53)</td><td bgcolor=#f6f6f5 
class=b6 background='g/gradient/1.gif'><a 
href='plan/crew/1' class=l>Femme</a></td></tr>

oftewel zonder alle "new lines" en alle "spaties" ik hoop dat hier ergens een scriptje voor te vinden is of een een plugin voor apache? ik bedoel het schilt allemaal bij elkaar een hoop dataverkeer... en zoals jullie weten is dataverkeer tijd en geld! (zeker met lange DB lijsten).

Heel erg bedankt voor het lezen en ik hoop dat je me kan helpen.

Better to be pissed off than pissed on .... :)


  • chem
  • Registratie: Oktober 2000
  • Laatst online: 27-08 13:53

chem

Reist de wereld rond

je bent je compression type vergeten door te geven, iig dat had ik indertijd een keer...

btw als je al compressed maken die newlines/tabs erg weinig uit
er is geen kant en klaar script, maar hiermee moet het lukken:
str_replace((array("\n","\t"),array(),$string);

Klaar voor een nieuwe uitdaging.


  • cyco2437
  • Registratie: Januari 2001
  • Laatst online: 13-09-2025
PHP:
1
<?<html><body><p>This should be a compressed page.</body></html><?phpob_start("ob_gzhandler");header("Content-Encoding: gzip");?>

dit net geprobeerd van een ZEND site...
maar nog steeds pruts tekens (overigens maakte het geen verschil.. niet meer of minder resultaat).

jij of iemand anders misschien nog een idee?

Better to be pissed off than pissed on .... :)


  • cyco2437
  • Registratie: Januari 2001
  • Laatst online: 13-09-2025
misschien voor nog meer duidelijkheid de packet dumps.
dit is de outgoing packet (van mij dus):
code:
1
2
3
4
5
6
7
8
9
10
GET /gziptest.php HTTP/1.1.
Accept: */*.
Accept-Language: nl.
Accept-Encoding: gzip, deflate.
User-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0).
Host: d79197.upc-d.chello.nl.
Connection: Keep-Alive.
Cookie: PHPSESSID=0ed763e2765d7df4390ee8289b446ef7.
.
/htm$

en dit is de incoming packet (van de server dus):
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
......HTTP/1.1 200 OK.
Date: Mon, 04 Mar 2002 15:19:41 GMT.
Server: Apache/1.3.23 (Unix) PHP/4.1.2.
X-Powered-By: PHP/4.1.2.
Content-Encoding: gzip.
Vary: Accept-Encoding.
Content-Length: 98.
Keep-Alive: timeout=15, max=100.
Connection: Keep-Alive.
Content-Type: text/html.
.
.........²É(Éͱã²IÊO©.R.v!.Å
Å.ù¥9)
I©

Éù¹.E©ÅÅ©)
.é©z\6úPÅú.œòÝ..`ÀÌ.$þÿgf.....ÿÿ..j...]...GE3

nogmaals thanx p33pz

Better to be pissed off than pissed on .... :)


  • chem
  • Registratie: Oktober 2000
  • Laatst online: 27-08 13:53

chem

Reist de wereld rond

zet die header HELEMAAL bovenaan

Klaar voor een nieuwe uitdaging.


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

De ob_start moet _vooraan_ ipv achteraan ;)

  • cyco2437
  • Registratie: Januari 2001
  • Laatst online: 13-09-2025
PHP:
1
<?header("Content-Encoding: gzip");ob_start("ob_gzhandler");?><html><body><p>This should be a compressed page.</body></html>?>

haha :) sorry dat ik zo hardnekkig ben hoor maar helemaal geen geluk met dit... (zonder of met die header) krijg ik alleen maar crap in mijn browser :(

packets nu:
outgoing:
code:
1
2
3
4
5
6
7
8
GET /gziptest.php HTTP/1.1.
Accept: */*.
Accept-Language: nl.
Accept-Encoding: gzip, deflate.
User-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0).
Host: d79197.upc-d.chello.nl.
Connection: Keep-Alive.
.

incoming
code:
1
2
3
4
5
6
7
8
9
10
11
12
......HTTP/1.1 200 OK.
Date: Mon, 04 Mar 2002 15:33:26 GMT.
Server: Apache/1.3.23 (Unix) PHP/4.1.2.
X-Powered-By: PHP/4.1.2.
Content-Encoding: gzip.
Vary: Accept-Encoding.
Content-Length: 107.
Keep-Alive: timeout=15, max=100.
Connection: Keep-Alive.
Content-Type: text/html.
.
.&#8249;........&#8217;ïæ`..æM'5NžÝøx&#8220;ç)ÿ&#8226;,A¬eŜ&#8217;3r.&#8226;ü¹ÔR&#8220;Ës%W'×ÉŸ;Y]W.=ºR&#8220;&#8249;µóåʪ.³_.G.ì.iÿÿŸ&#8482;g¹Òj. ....ÿÿ...ô&#8216;7T...GET /3

mega vaag dit allemaal
maar de browser output was nu dus (source gedaan):
code:
1
2
3
4
5
6
&#8249; ²É(Éͱã²IÊO©Rv!&#8482;Å
Åù¥9)
I©
&#8240;
Éù¹E©ÅÅ©)
&#8240;é©z\6úPÅú&frac12;\    ÿÿ §"«D

Better to be pissed off than pissed on .... :)


  • chem
  • Registratie: Oktober 2000
  • Laatst online: 27-08 13:53

chem

Reist de wereld rond

ik heb dit als gzip output:
PHP:
1
<?    $Contents = ob_get_contents();    ob_end_clean();    header("Content-Encoding: $ENCODING");    print "\x1f\x8b\x08\x00\x00\x00\x00\x00";    $Size = strlen($Contents);    $Crc = crc32($Contents);    $Contents = gzcompress($Contents,9);    $Contents = substr($Contents, 0, strlen($Contents) - 4);    print $Contents;    print pack('V',$Crc);    print pack('V',$Size);    exit;?>

Klaar voor een nieuwe uitdaging.


  • cyco2437
  • Registratie: Januari 2001
  • Laatst online: 13-09-2025
neeeeeeeeeeej dit ga je niet menen....
ik heb de oplossing...

er stond nog een spatie achter de laatste ?>
Bleh!
/me hates it when comps do stuff like that.

ff ter ondersteuning.
de code die werkt is dus:
code:
1
2
3
4
5
6
7
8
<html>
<body>
<p>This should be a compressed page.
</body>
</html>
<?
ob_start("ob_gzhandler");
?>

in PHP 4.1.2!
geen headers en shit.
maar pas op met spaties (en enters) na de laatste ?>

Better to be pissed off than pissed on .... :)


  • Soultaker
  • Registratie: September 2000
  • Laatst online: 16:20
Op maandag 04 maart 2002 17:21 schreef cyco2 het volgende:
er stond nog een spatie achter de laatste ?>
Bleh!
/me hates it when comps do stuff like that.

ff ter ondersteuning.
de code die werkt is dus:
code:
1
2
3
4
5
6
7
8
<html>
<body>
<p>This should be a compressed page.
</body>
</html>
<?
ob_start("ob_gzhandler");
?>

in PHP 4.1.2!
geen headers en shit.
maar pas op met spaties (en enters) na de laatste ?>
Met alle respect, maar ik moet het even zeggen: je hebt er niet veel van begrepen, he?!

Dit zal wel een leuk resultaat geven, maar dat komt dan omdat er HELEMAAL NIETS ge-gzipt wordt. Op het moment dat je uitvoer door de gz-handler begint te sturen, komt er namelijk geen uitvoer meer. Alle eerdere uitvoer is al op de NORMALE manier (dus met NORMALE, niet-gecomprimeerde karakters) verstuurd. Het feit dat je eerst nog wat rare tekens kreeg, kwam doordat die laatste enter in het bestand nog gecomprimeerd werd.

Gelukkig doet PHP het meeste werk voor je, dus hoef je alleen maar helemaal bovenaan ob_start("ob_gzhandler") aan te roepen. Dat staat ook letterlijk zo in de manual.

  • cyco2437
  • Registratie: Januari 2001
  • Laatst online: 13-09-2025
yep ik snap het ....

is al weer een tijdje verder nu, maar ik gebruik het volop nu... volgens sniffer ook mooi gepacked allemaal :)

thanx allemaal...

Better to be pissed off than pissed on .... :)

Pagina: 1