ob_start() et php script

WRInaute discret
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 : https://www.webrankinfo.com/forum/t/script-mise-en-cache-des-pages-php.28614/ )
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:
<?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.
 
WRInaute accro
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
 
WRInaute accro
Code:
<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 ;-)
 
WRInaute discret
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
 
WRInaute passionné
YoyoS a dit:
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.
 
WRInaute accro
Pas dutout, si tu codes proprement en modèle MVC, t'as tout le temps de modifier les headers avant d'envoyer la page ;)
 
WRInaute passionné
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.
 
Discussions similaires
Haut