ob_start() et php script

Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics

DecibelMan
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 134
Inscription: Dim Juil 10, 2005 14:36

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: 3062
Inscription: Jeu Sep 14, 2006 4:53

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: 1186
Inscription: Dim Déc 05, 2004 19:47

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 occasionnel
WRInaute occasionnel
 
Messages: 134
Inscription: Dim Juil 10, 2005 14:36

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 accro
WRInaute accro
 
Messages: 1874
Inscription: Dim Déc 17, 2006 21:08

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: 3062
Inscription: Jeu Sep 14, 2006 4:53

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 accro
WRInaute accro
 
Messages: 1290
Inscription: Jeu Fév 26, 2004 15:59

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.


Formation recommandée sur ce thème :

Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

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