ob_start() et php script

DecibelMan
WRInaute discret
WRInaute discret
 
Messages: 145
Inscription: 10 Juil 2005

ob_start() et php script

Message le Sam Jan 10, 2009 17:27

Bonjour, depuis peu j'utilise ob_start() sans trop savoir si ça marche vraiment.
Je n'utilise pas de fichier cache comme certains sites le font pour optimiser le tout. (cf ce très bon topic : http://www.webrankinfo.com/forums/viewtopic_28614.htm )
Bref, j'utilise ob_start() pour n'afficher le php qu'une fois tout calculé (enfin si j'ai bien compris le principe)
Je me demande si celà me sert dans mon cas :
index.php
Code: Tout sélectionner
<?php
session_start();
?>
<html>
<?php
ob_start()
[mon code php avec des centaines d'echo et quelques fonctions]
[1 pub google]
[mon code php avec d'autres echo et include('page.php');]
ob_end_flush();
?>
</body>
</html>


Ma question : est-ce rigoureux en termes de codage ? et est-ce que ça sert ? et les pubs dans une bufferisation c'est bon ? c'est pas génant ?

Et peux-t-on encapsuler plusieurs ob_start() ob_end_flush();
exemple si je fais un include ('page.php') et que dans page.php j'utilise ob_start() [nouveau code php] ob_end_flush(); qui est inclu dans mon index.php ?
Merci.
Dernière édition par DecibelMan le Sam Jan 10, 2009 18:04, édité 1 fois.


YoyoS
WRInaute accro
WRInaute accro
 
Messages: 3827
Inscription: 14 Sep 2006

Message le Sam Jan 10, 2009 17:44

Ca sert strictement à rien ^^ Si tu ne t'en sert pas pour créer un fichier de cache c'est comme si tu refaisais le même travail que le moteur php va faire juste après :P

zeb
WRInaute accro
WRInaute accro
 
Messages: 3278
Inscription: 5 Déc 2004

Re: ob_start() et php script

Message le Sam Jan 10, 2009 17:55

Code: Tout sélectionner
<html>
<?php
session_start();
ob_start()
[mon code php avec des centaines d'echo et quelques fonctions]
[1 pub google]
[mon code php avec d'autres echo et include('page.php');]
ob_end_flush();
?>
</body>
</html>


la présence de la balise <html> en amont du session_start() provoquie le fait que session_start() ne fonctionne pas.

la bufferisation des données n'apporte pas d'avantage si comme dit au dessus tu ne fait aucun traitement dessus.
Au pire tu retarde l'acheminement des données vers le navigateur client du coup tu retarde l'affichage des pubs qui n'est déclenché que lorsque le navigateur reçoit le code javascript de la pub ;-)

DecibelMan
WRInaute discret
WRInaute discret
 
Messages: 145
Inscription: 10 Juil 2005

Message le Sam Jan 10, 2009 18:03

Merci pour ces réponses.
Alors pour le <html> ouai c'est une erreur de recopiage, je vais editer ;)
Sinon je lisais ici http://www.linuxformat.co.uk/wiki/index ... _buffering
que les perf etaient améliorées du fait de l'empilement des données et de l'affichage en 1 bloc ? enfin je pige pas trop.
J'ai bcp de pages dynamiques qui changent à chaque utilisation d'un membre : ex : 1 membre upload une image et la stocke dans son espace.Je ne sais pas si le fichier cache aurait un intéret car l'utilisateur change perpétuellement de contenu sur sa page, comme un blog commenté en fait, ou un chat....

-sur une autre appli que j'ai, je crée du code php (bcp) et l'utilisateur créé des variables de session qui modifie la page sur laquelle il se trouve (couleur du fond, style...), si je mets en cache ma page de base, est-ce que la session sera pris en compte ? car c'est les var de sessions qui agrémentent la page, ensuite il peux télécharger le contenu fait (c'est encore mysterieux pour moi)


-cette fonction a l'air sympa
http://www.coderprofile.com/networks/so ... ge-caching
mais comment definir une date de cache si mon site est vachement dynamique, et de plus je ne vois pas de vidage du buffer ob_clean ?

Je sais ca fait pas mal de question mais mon serveur sature lol


webmasterlamogere
WRInaute passionné
WRInaute passionné
 
Messages: 1874
Inscription: 17 Déc 2006

Message le Dim Jan 11, 2009 8:35

YoyoS a écrit:Ca sert strictement à rien ^^ Si tu ne t'en sert pas pour créer un fichier de cache c'est comme si tu refaisais le même travail que le moteur php va faire juste après :P

je vois une utilité très pratique : envoyer une erreur 503 en cas d'erreur mysql.


YoyoS
WRInaute accro
WRInaute accro
 
Messages: 3827
Inscription: 14 Sep 2006

Message le Dim Jan 11, 2009 8:49

Pas dutout, si tu codes proprement en modèle MVC, t'as tout le temps de modifier les headers avant d'envoyer la page ;)


Bool
WRInaute passionné
WRInaute passionné
 
Messages: 1290
Inscription: 26 Fév 2004

Message le Dim Jan 11, 2009 11:47

Comme les autres, ob_start() ne me sert qu'à des endroits très précis... pour de la bufferisation quoi ;)

Pour l'aspect performance, il y a un très très léger gain, mais qu'on retrouve aussi si on active la compression (zlib.output_compression) ou simplement la bufferisation "par paquet". Et au moins contrairement à ob_start() ça n'impacte quasiment pas la consommation mémoire.


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités