8
votes

Texte de sortie PHP avant de vous coucher

Je veux que PHP sortit du texte, puis dormez pendant une seconde et une demi, puis de produire un autre texte.

<?php

echo 'Output one.';

usleep(1500000);

echo 'Output two.';

?>


0 commentaires

6 Réponses :


11
votes

Vérifiez ceci out

<?php

ob_start();

echo 'Output one.';
ob_flush();
usleep(1500000);
echo 'Output two.';
ob_flush();

?>


1 commentaires

Cela n'a pas fonctionné pour moi mais j'ai ajouté flush (); après chaque ob_flush (); alors cela a fonctionné. Quelqu'un peut-il expliquer pourquoi j'ai besoin de flush ?



1
votes

Alors que la solution de Pentium10 fonctionnera probablement, vous voudrez peut-être envisager de déplacer cela sur le côté du client. Avoir un appel ASYNC pour obtenir la première valeur, l'imprimer, veillez à la quantité de temps requise, puis répétez la deuxième valeur.


0 commentaires

2
votes

Je pense que c'est plus une question de demande / réponse HTTP. Sur la ligne de commande, votre script fonctionne bien.

Normalement, la réponse est préparée complètement et envoie au client. Si votre réponse a une telle taille que plusieurs paquets TCP doivent être envoyés, il pourrait arriver que les premiers packages soient envoyés, avant votre script est prêt avec le traitement. Cela dépend donc de la taille de la sortie. Selon le navigateur client / Web, il pourrait également arriver que les premiers paquets sont rendus, avant que la réponse complète n'arrive chez le client.

comme Noufal Ibrahim répondit pendant que je saisie, je suis totalement d'accord avec lui. Faites-le d'une manière asynchrone.


0 commentaires

9
votes

La réponse de Pentium10 n'a pas bien fonctionné pour moi .. Cependant, lorsque je suis allé à la page de documentation PHP, il y avait beaucoup de bons commentaires sur là.

http://php.net/manual/fr/funcunction.Ob-flush.php p>

Ceci a fonctionné pour Moi en utilisant Firefox 3.5.9, PHP 5.2.11, Apache Extrayage de l'ordinateur portable Windows 7 local: P>

echo "test";
ob_end_flush();
flush();
usleep(x);
echo "test";


1 commentaires

Seule la réponse qui a fonctionné pour moi! Merci beaucoup!



1
votes
echo 'Output one.';
ob_flush(); 
flush();
usleep(1500000);
echo 'Output two.';

0 commentaires

0
votes

Votre problème est que c'est PHP. C'est un pré-processeur. Donc, le script PHP fonctionne, émet le premier journal, puis couchait, puis sortit le deuxième journal, et seuls le SEULEMED est envoyé à votre navigateur.

Vous avez besoin de JavaScript si vous souhaitez que le retard soit visible sur votre Écran de navigateur. p>

p>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="firstlog">
  Output of first log
</div>
<div class="secondlog">
  Output of second log
</div>

<p>Wait for 3 seconds...</p>


0 commentaires