Page 1 sur 1

mise en tampon ob_start

Posté : 22 oct. 2013, 12:05
par Megadeth
Bonjour,

J'ai un souci avec cette fonction dans mon site sous le cms ezpublish.

Je ne sais pas si c'est moi ou pas mais tout est craché en haut de ma page et il semblerait que le ob_start sature...

Quelqu'un a une idée ou a déjà rencontré ce souci ?

Bien à vous,

Mega
;)

Re: mise en tampon ob_start

Posté : 22 oct. 2013, 16:39
par damien_55
slt,

C'est pas trop clair ton erreur: tout est crashé en haut de page ? c'est quoi ton message d'erreur.

ob_start est un fonction php tu inserts ton code ou? dans ton template html, php? as tu mis tes balise php <? ?> ?

Re: mise en tampon ob_start

Posté : 23 oct. 2013, 11:13
par Megadeth
Bonjour et merci Damien,

Ce n'est pas craché, mais au premier affichage le contenu apparaît au dessus de tous les éléments de mon site et je ne sais pas pourquoi.

Si je recharge la page (F5) tout rentre dans l'ordre. C'est vraiment au premier affichage quand le contenu n'est pas dans le cache ezpublish.

Comment expliquer ce comportement ? Comment le corriger ?

Bien à toi,

Mega
;)

Re: mise en tampon ob_start

Posté : 23 oct. 2013, 12:55
par xTG
Je dirai que tu as du contenu HTML chargé en plus dans un cas que dans l'autre non ?
Compares le code HTML généré.

Re: mise en tampon ob_start

Posté : 23 oct. 2013, 13:12
par Mazarini
Eventuellement, ton serveur n'est pas assez puissant.
Est ce que cette ob_start() est un ajout que tu as fait ? Si oui, n'est il pas en conflit avec des ob_start() déjà présents ?

Re: mise en tampon ob_start

Posté : 23 oct. 2013, 15:09
par Megadeth
Salut xTG, Mazarini,

Ce contenu est bien le contenu délivré par le ob_start et je ne pense pas qu'il y ait un conflit avec un autre ob_start.

Je déclenche mon ob_start dans mon templateOperator (ezpublish). Nativement je ne pouvais pas exécuter du php dans ezp sauf par cette méthode.

A partir de là je décide que tout ce qui résulte de ma requête (très simple) soit mis en tampon et délivré à mon bon vouloir.

Hors dans ce cas du premier affichage le contenu mis en tampon est recraché par mon echo alors qu'il s'agit de div masqués (carte google maps)

Vous me suivez ?

Bien à vous,

Mega
;)

Re: mise en tampon ob_start

Posté : 23 oct. 2013, 17:54
par xTG
Problème de mise en forme donc.
Vérifies que c'est bien le bon CSS qui est appliqué (ou règle CSS) lorsque le problème est affiché (d'autant plus si ton CSS est généré par PHP).

Je regarderai aussi tant qu'à faire le début de la réponse renvoyée pour voir s'il n'y a pas des caractères non imprimables ou bizarreries du genre.

Re: mise en tampon ob_start

Posté : 24 oct. 2013, 11:14
par Megadeth
Salut xTG,

En fait si c'était ça, ça ne devrait pas me le faire à chaque fois ? C'est pas binaire ?

J'attaque des webservices pour récupérer de l'info et suis obligé de vider le cache ezpublish pour voir les mises à jour sinon mon template ne l'affiche pas alors que dans l'idée je me disais que c'était du temps réel. Si déjà je n'ai pas ça à gérer ça réglerait le problème. Seulement pour voir la modif il faut vider le cache appli et là au premier affichage le html mis en tampon est recraché au dessus de tout mon site alors que le traitement est bien plus tard dans la page et d'autant plus qu'il ne bouge pas entre le premier affichage et les suivants. En rechargeant la page tout rentre dans l'ordre comme si il y a avait sur le premier affichage un ordre dû au fait que le contenu est nouveau...

Cache ? Appli ? CSs..? Tu me charges ces éléments en dernier, on peut pas gérer la tempo ?

Mega
;)

Re: mise en tampon ob_start

Posté : 24 oct. 2013, 11:38
par damien_55
SLt,

Je pense que c'est dans ton cms, le problème. On dirait qu'il traite ton ob_start + ton cache de page au premier chargement.

Comme ci, il y a vait un echo de ton ob_start + ton cache au premier chargement.

Ensuite tout rentre dans l'ordre puisqu'il met en cache ta page complète avec la modification.

Je regarderai la doc ezpublish pour savoir comment fonctionne la mise en cache, a mon avis le template de ta page est découpé par partie comme par exemple head, body, footer, le php aussi doit avoir un cache propre et tout est reconstruit a la demande de la page. ta modif etant mal placé dans ton cms, elle est interprétée avant la recontruction de tout le cache donc au premier affichage tu la vois à l'affichage. A la fin du premier chargement, il reprends la code complet de ta page, et le decoupe, et le remet en cache.

je ne sais pas si je suis clair dans mon explication, en gros, ton cms ne mets en cache des parties de page et quand il reconstruit la page complete "en cache", il appelle ces parties de pages à des moments précis avec un ordre précis. lors de ton premier appelle, ton code modifié est appelé avant le cache de cette partie donc il s'affiche.

C'est une juste une idée pas une certitude. (c'est un peu comme drupal, qui te mets l'image d'un article dans une une autre table, dans un autre dossier, avec des id_propre etc..etc.. pour comprendre comment une page est construite, il faut vraiment creusé...). La joie des cms. :wink:

Re: mise en tampon ob_start

Posté : 24 oct. 2013, 14:48
par Megadeth
Bonjour et merci,

Oui Damien, j'imagine bien quelque chose de la sorte au même titre que drupal, joomla...

Ce "bug" d'affichage survient au moment où le cache est vidé et les modifications externes n'apparaissent que si le cache est vidé sinon je ne le vois pas (super pour de l'info en temps réel :( )

donc il faudrait, je pense, trouver le moyen pour ne rien mettre en cache (solution 1)
gérer la temporisation, le déclenchement voir le comportement de mes div (solution 2)

Une idée ? Je vais approfondir potasser un peu plus la doc...

Mega
;)