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.'; ?>
6 Réponses :
Vérifiez ceci out
<?php ob_start(); echo 'Output one.'; ob_flush(); usleep(1500000); echo 'Output two.'; ob_flush(); ?>
Cela n'a pas fonctionné pour moi mais j'ai ajouté flush (); code> après chaque
ob_flush (); code> alors cela a fonctionné. Quelqu'un peut-il expliquer pourquoi j'ai besoin de
flush code>?
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. p>
Je pense que c'est plus une question de demande / réponse HTTP. Sur la ligne de commande, votre script fonctionne bien. p>
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. P>
comme Noufal Ibrahim répondit pendant que je saisie, je suis totalement d'accord avec lui. Faites-le d'une manière asynchrone. P>
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";
Seule la réponse qui a fonctionné pour moi! Merci beaucoup!
echo 'Output one.'; ob_flush(); flush(); usleep(1500000); echo 'Output two.';
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>