ob_start ob_flush etc..

reg35
Invité n'ayant pas de compte PHPfrance

25 févr. 2017, 10:45

Bonjour,

J'ai un léger problème avec cette fonctionnalité. Ce n'est pas du coté php que j'ai un soucis mais je ne sais pas ou poster ce message donc me voila.

J'ai une page avec pas mal d'élément donc j'utilise la temporisation via les fonctions ob pour l'afficher au fur et à mesure.

Si je résume le code j'ai ça

Code : Tout sélectionner

ob_start(); echo 'blabla 1'; echo str_pad('',8000); ob_flush(); flush(); echo 'blabla 2'; ob_end_flush();
Tout simple mais ça ne marche... je cherche je cherche, d'après tout ce que je lis je fait tout bien.
Et la je me rends compte que ce script fonctionne sur mon pc du taf mais pas sur mon perso.

Paramétrage du navigateur? J'ai firefox dernière version sur les 2 pc.

Quelqu'un a t'il une idée? Please !!

Regis

Eléphanteau du PHP | 30 Messages

25 févr. 2017, 14:31

Bonjour,

Tu cherches à faire quoi avec ce code ?
De mon côté j'utilise ces fonctionnalités pour faire un genre de templating.

Je commence par faire une condition qui défini un $_GET du genre
if(isset($_GET['p'])){
    $p = $_GET['p'];
} else {
    $p = 'accueil';
}
Ensuite en fonction de ce qui est appelé j'envoie la page correspondante :
ob_start();
if($p === 'accueil'){
    require '../pages/accueil.php';
} elseif ($p === 'article'){
    require '../pages/article.php';
}
$content = ob_get_clean();
require '../pages/templates/layout.php';
Etant donné que je ne sais pas vraiment ou tu veux en venir je me permet de te donner mon exemple qui pourra peut-être t'aider en attendant qu'un calé du PHP intervienne.

reg35
Invité n'ayant pas de compte PHPfrance

25 févr. 2017, 14:40

En fait, la fonction sert à afficher certains éléments de la page avant qu'elle ne soit charger complétement.
le flush libère l'affichage et ensuite la page continue de se charger

Eléphanteau du PHP | 30 Messages

25 févr. 2017, 14:43

Donc là tu souhaites afficher seulement blabla 1 pour commencer ?

J'ai fais le test et de mon côté cela m'affiche blabla 1 blabla 2

reg35
Invité n'ayant pas de compte PHPfrance

25 févr. 2017, 14:57

oui, en fait pour le voir à l'oeil il faut mettre un sleep entre les éléments

essaye ça :

Code : Tout sélectionner

ob_start(); echo 'blabla 1'; echo str_pad('',8000); ob_flush(); flush(); sleep(5); echo 'blabla 2'; ob_end_flush();

Eléphanteau du PHP | 30 Messages

25 févr. 2017, 14:59

Okay je vois et tu dis que sur ton pc du travail, blablabla 1 apparait tout seul sans le blablabla 2 ?

reg35
Invité n'ayant pas de compte PHPfrance

25 févr. 2017, 15:29

Oui sur mon pc de travail blabla1 apparait et ensuite blabla2 apparait 5 secondes après.
Sur le mien tout apparait en même temps au bout de 5 secondes

reg35
Invité n'ayant pas de compte PHPfrance

26 févr. 2017, 10:11

Après avoir fait des tests complémentaire cette nuit au taf, je conclus que ça ne viens pas du navigateur non plus. C'est un truc dans win7 du coup je pense.

Explication:
au taf ça fonctionne sur Firefox et IE
at home, ça ne fonctionne pas ni sur l'un ni sur l'autre

quel bordel.... j'ai besoin d'aide la, trop pointu pour moi

reg35
Invité n'ayant pas de compte PHPfrance

26 févr. 2017, 10:12

J'ai oublié de préciser que je suis sur win7 des 2 cotés.
Mais au taf y'a pas toute les mises à jour

Eléphanteau du PHP | 30 Messages

26 févr. 2017, 12:50

Je suis désolé je ne peux pas vraiment t'aider je suis tellement loin en terme de compétences, mais je trouverai ça bizarre que ça vienne de l'OS, en revanche du navigateur je dis pas non bien que se soit les mêmes y a t'il des plugins supplémentaire chez l'un ou l'autre ?

Le php ce n'est pas comme le css ou il pourrait y avoir des ecarts entre navigateur, langage serveur donc normalement il réagit de la même façon partout, je n'affirme rien c'est n'est que supposition.

reg35
Invité n'ayant pas de compte PHPfrance

28 févr. 2017, 08:38

Après quelques recherches complémentaire, en augmentant la taille du str_pad à une valeur hors norme ça fonctionne.

Code : Tout sélectionner

ob_start(); echo 'blabla 1'; echo str_pad('',9999999999); ob_flush(); flush(); sleep(5); echo 'blabla 2'; ob_end_flush();
Mais forcément ça ne me plait pas donc j cherche toujours pourquoi le pc, navigateur ou autre influe la dessus.

Help !!!!!!! SoS !!! Déprime :( :( :(

Est ce qu'un admin peux déplacer ce post en section php avancé?

Merci