PHP texte de sortie avant de dormir
Je veux PHP à la sortie du texte, puis dormir pendant une seconde et demi, et puis sortir un texte plus.
<?php
echo 'Output one.';
usleep(1500000);
echo 'Output two.';
?>
Mon problème est que tout le texte est à la fois - après avoir attendu ces 1,5 secondes. J'ai lu quelque chose à propos d'une fonction appelée flush - mais il ne semble pas fonctionner. Peut-être que je ne suis pas à l'utiliser à écrire. Toute aide serait appréciée ^^
Merci d'avance!
Vous devez vous connecter pour publier un commentaire.
vérifier cela
flush();
après chaqueob_flush();
puis il a travaillé. Quelqu'un peut-il expliquer pourquoi j'ai besoin deflush
?Pentium10 la réponse n'a pas assez de travail pour moi.. Mais quand je suis allé à la documentation PHP de la page, il y a eu beaucoup de bons commentaires sur il.
http://php.net/manual/en/function.ob-flush.php
Cela a fonctionné pour moi, en utilisant Firefox 3.5.9, PHP 5.2.11, Apache en cours d'exécution hors local Windows 7 ordinateur portable:
Le ob_end_flush() est indispensable à l'obtention de données envoyées.
Je pense que c'est plus une requête/réponse http problème. Sur la ligne de commande de votre script fonctionne très bien.
Normalement la réponse est préparé complètement et de les envoyer au client. Si votre réponse a une taille telle que plusieurs tcp paquets doivent être envoyer, il pourrait arriver que les premiers paquets sont à envoyer, avant le script est prêt avec le traitement. Donc, cela dépend de la taille de la sortie. Selon le client/navigateur web, il se pourrait aussi que les premiers paquets sont rendus, avant la réponse complète arrive chez le client.
Comme Noufal Ibrahim répondu alors que im taper, je suis totalement d'accord avec lui. Faire d'une manière asynchrone.
Tout Pentium10 la solution sera probablement de travail, vous pourriez envisager le déplacement de ce côté client. Avoir un appel asynchrone pour obtenir la première valeur, l'imprimer, le sommeil de la quantité requise de temps et puis répétez l'opération pour la deuxième valeur.
Votre problème, c'est que c'est PHP. C'est un pré-processeur. Donc le script php s'exécute, sorties la première ouverture de session, puis dort, puis d'indiquer le deuxième journal, et seulement thén il est envoyé, et l'affiche dans votre navigateur.
Vous avez besoin de javascript si vous souhaitez que le délai pour être visible sur votre écran de navigation.
JS:
CSS:
HTML: