France Hardware : Forums de discussion
Retrouvez les prix près de chez vous :  
Index du forum | Liste des membres | Liste des groupes | Inscription | F-A-Q | Recherche
Pseudo :    Password :     
23 039 membres enregistrés - 1 896 565 posts - 97 408 topics
Index des forums FH  | Index des forums DegroupNews
      Programmation
           [PHP] ob_start avec callback & ob_gzhandler
12 connectés(record : 207 le 05 juin 2007 - 05 h 23)

Vous devez vous connecter pour répondre au topic.
[PHP] ob_start avec callback & ob_gzhandler

Erel69
206
(¯`·.__[T3aM.L1b3rTe©]__.·´¯)

Messages : 19 449
Inscrit le 07/11/01
Ville : Lyon
Non connecté
  Posté le 22 août 2005 - 11 h 58 m 37 s
Bon, voilà mon problème. J'utilise la bufferisation, avec fonction de callback.

Donc en gros, ma page se compose comme suit :

    Code     
1. //anti-bug
2. ob_start('obs_callback');
3. 
4. // page
5. 
6. ob_end_flush();
Seulement, j'utilise par fois la compression gzip. Il me faut donc utiliser ob_gzhandler. J'ai essayé 2 solutions :
    Code     
 1. //anti-bug
 2. ob_start('obs_callback');
 3. 
 4. // page
 5. 
 6. $buffer = ob_get_contents();
 7. ob_end_clean();
 8. ob_start('ob_gzhandler');
 9. print $buffer;
10. ob_end_flush();
Seulement, quand on récupère le buffer via ob_get_contents la fonction de callback n'est pas appellé. Il faut obligatoirement passer par ob_end_flush. J'ai aussi essayé d'utiliser la compression dans ma fonction de callback personnalisé :
    Code     
1. //anti-bug
2. function obs_callback($buffer)
3. {
4.     // traitement
5.     $buffer = ob_gzhandler($buffer);
6.     return $buffer;
7. }


Mais là j'obtiens une page blanche :(



Obscurité au-delà du crépuscule, pourpre au-delà du sang qui coule, enfoui dans le flot du temps, en ton haut nom, je jure fidélité à l'obscurité. Que les fous qui se dressent devant nous soient détruits, par le pouvoir que toi et moi possédons...

alitokmen
Think ®

Messages : 3 687
Inscrit le 19/09/02
Ville : Grenoble, France || Ankara, Turquie
Non connecté
  Posté le 22 août 2005 - 15 h 28 m 42 s
Faut faire comme ça

    Code     
 1. // SEND PAGE USING ZIP COMPRESSION...
 2. ob_implicit_flush(0);
 3. ob_start();
 4. define('ZIP_IT',(extension_loaded('zlib') && (strstr($_SERVER["HTTP_ACCEPT_ENCODING"],'gzip') || strstr($useragent,'compatible') || strstr($useragent,'Gecko'))));
 5. 
 6. // Ici vient la page
 7. 
 8. // COMPRESS OUTPUT AND SEND IT
 9. 
10. if(ZIP_IT && !headers_sent()){
11. 	header('Content-Encoding: gzip');
12. 	$gzip_contents=ob_get_contents();
13. 	ob_end_clean();
14. 
15. 	$gzip_size=strlen($gzip_contents);
16. 	$gzip_crc=crc32($gzip_contents);
17. 
18. 	$gzip_contents=gzcompress($gzip_contents,9);
19. 	$gzip_contents=substr($gzip_contents,0,strlen($gzip_contents)-4);
20. 
21. 	echo "\x1f\x8b\x08\x00\x00\x00\x00\x00";
22. 	echo $gzip_contents;
23. 	echo pack('V',$gzip_crc);
24. 	echo pack('V',$gzip_size);
25. }else{
26. 	ob_end_flush();}



S. Ali Tokmen
http://ali.tokmen.com
http://contact.ali.tokmen.com


Erel69
206
(¯`·.__[T3aM.L1b3rTe©]__.·´¯)

Messages : 19 449
Inscrit le 07/11/01
Ville : Lyon
Non connecté
  Posté le 22 août 2005 - 15 h 39 m 50 s
Ben avec ta solution je n'ai toujours aps ma fonction de callback perso ?



Obscurité au-delà du crépuscule, pourpre au-delà du sang qui coule, enfoui dans le flot du temps, en ton haut nom, je jure fidélité à l'obscurité. Que les fous qui se dressent devant nous soient détruits, par le pouvoir que toi et moi possédons...

alitokmen
Think ®

Messages : 3 687
Inscrit le 19/09/02
Ville : Grenoble, France || Ankara, Turquie
Non connecté
  Posté le 23 août 2005 - 10 h 06 m 24 s
Suffit d'appeler ob_start avec le callback ... non ?

Sinon tu peux appliquer le callback sur le $gzip_contents (le résultat du ob_get_contents)



S. Ali Tokmen
http://ali.tokmen.com
http://contact.ali.tokmen.com


Erel69
206
(¯`·.__[T3aM.L1b3rTe©]__.·´¯)

Messages : 19 449
Inscrit le 07/11/01
Ville : Lyon
Non connecté
  Posté le 23 août 2005 - 17 h 25 m 20 s
J'obtiens encore et toujours une page vierge :(



Obscurité au-delà du crépuscule, pourpre au-delà du sang qui coule, enfoui dans le flot du temps, en ton haut nom, je jure fidélité à l'obscurité. Que les fous qui se dressent devant nous soient détruits, par le pouvoir que toi et moi possédons...

alitokmen
Think ®

Messages : 3 687
Inscrit le 19/09/02
Ville : Grenoble, France || Ankara, Turquie
Non connecté
  Posté le 23 août 2005 - 18 h 19 m 26 s
Aie...

Et avec mon code essaye de définir ZIP_IT à false pour que le code sans ZIP soit executé

PS: je pars en vacances dans quelques heures, je ne serai pas là pour genre 2 semaines



S. Ali Tokmen
http://ali.tokmen.com
http://contact.ali.tokmen.com


alitokmen
Think ®

Messages : 3 687
Inscrit le 19/09/02
Ville : Grenoble, France || Ankara, Turquie
Non connecté
  Posté le 23 août 2005 - 18 h 19 m 55 s
IDEE: essaye de voir s'il y a des warning et si ta fonction de callback marche



S. Ali Tokmen
http://ali.tokmen.com
http://contact.ali.tokmen.com


Page genérée en 0.3180 secondes par RahForum 2.0 | Gzip off |  Stats |  Metaforums |  RSS
© 2004 Cerbere Systems.
Prix Matériel Informatique | Informatique Lyon | Informatique Grenoble | Informatique Annecy | Informatique Marseille | Informatique Bordeaux | Forum Informatique
ADSL |Actualité ADSL | e-commerce | Commande Au Volant
Creative Commons
Message Boards and Forums Directory