Pourquoi php n'execute pas les commande dans l'ordre ...
Forum Programmation : Pourquoi php n'execute pas les commande dans l'ordre ...
Salut à tous, bon voila j'ai un problème que je n'arrive pas vraiment à comprendre.
Le bute de mon petit bout de script est d'afficher tout d'abord, : "patientez 15 seconde" puis justement d'attendre 15 secondes avant d'executer la suite des oppérations.
Voici mon script pour l'instant :
Code :
|
Le problème est que la page n'affiche pas "Patientez 15 secondes" avant que ces 15 secondes soit passé et sa m'affiche d'un coup :
"Patientez 15seconde.C'est bon 15 secondes sont passé"
Alors que je place bien l'affiche de la phrase "Patientez 15 secondes" avant l'execution du code pour attendre 15 secondes et donc la je vois pas trop quoi et comment faire ...... Si quelqu'un pouvait m'aider ....
Merci
Message édité par Prog le 22-09-2006 à 19:19:09
la commande sleep() et la commande flush() sont tes amies.
Le php traite tout et une fois son exécution achevée, il envoit sur la sortie standard (le flux html).
La fonction flush() permet de forcer l'envoit de tes données.
Quant à sleep, elle force une pause dans le traitement.
Exemple de base:
Code :
|
Répondre à crazycat@idn
Bon alors pour le "sleep" ok j'ai saisis le truc enfaite sa m'épargne quand meme une 20aine de lignes donc merci beaucoup
Par contre pour le "fluch" la j'y arrive pas j'ai du manquer un truc est ce que tu peux le mettre en pratique ..... stp
Enfaite c'est pas que j'y arrive pas mais que sa ne marche pas, après quelques recherche sur la fonction apparement, certain serveur et meme navigateur ne ferais pas attention à cette fonction qui vide "buffer de sortie" alors que eux l'utilise.
Donc si tu vois une autre solution je suis preneur ....
Merci
Message édité par Prog le 22-09-2006 à 20:21:00
Si je ne me plante pas, le PHP s'éxécute sur le serveur....qui envoi les pages générées après éxecution totale des codes PHP....En gros, sans le flush, il te serait impossible d'envoyer une page affichable a ton client avant que le script PHP ai fini son éxécution (donc avant que tes 15 sec soient passées)...
Dans le code ci dessu, la fonction flush va forcer le serveur a envoyer ce qu'il a traité de ta page (c'est à dire la ligne écho se trouvant juste au dessu) avant de continuer tranquilement (et d'attendre 15 secondes avant de réenvoyer de nouvelles données)...
Après ne connaissant pas ces commandes, je peux me planter...Mais c'est ce que j'ai compris de la réponse de crazycat
Edit: Ton edit a été plus rapide que ma réponse ^^...Dsl...
Message édité par Nisnor le 22-09-2006 à 20:23:55
Oui Oui enfaite c'est sa, mais tu n'as pas du voir que j'ai reédité mon post, dsl.
Et re plus rapide...MDR...
Alors peut etre des infos interressante...Mais pas forcément solvable malheureusement...
Je te fais un CC:
| Citation : De nombreux serveurs, essentiellement sous Windows, continueront à bufferiser l'affichage de votre script jusqu'à ce qu'il soit terminé, avant de transmettre les résultats à l'internaute.
|
Dans les deux premiers cas, il doit y avoir solution...Mais dans les deux derniers, là ça sera plus difficile a corriger puisque ça ne tient plus du serveur :s
lol ouép je tiens mes sources du meme petit bout de texte ^^
LooL...Faut toujours que je sois à la ramasse sur ce forum ^^
Autre solution (tout dépend du résultat esthétiqu que tu souhaite obtenir)
Tu fais une premiere page avec un META REFRESH de 15 seconde et où tu marques "patientez 15 sec)" et qui redirigera sur la page php que tu execute normalement
si le flush() ne marche pas, on peut essayer:
en début de page: ob_start();
à la place du flush: ob_flush();
Répondre à crazycat@idn
Salut tout le monde enfaite finalement j'ai opté pour une solution un peu du genre celle proposée par "okinou"
Donc j'affiche le texte patientez 15 seconde puis un petit javascript se charge de rediriger le visiteur sur la meme page mais avec un paramètre en plus. Puis avec un peu de php je récupère la variable et je voi si c'est bon ou pas ...
J'ai pas le code sous la main mais si quelqu'un aimerais voir ce que sa donne demandez le moi je le posterais
Message édité par Prog le 23-09-2006 à 13:41:09
n'utilise pas javascript pour la redirection car si le client ne l'a pas activé, cela ne marchera pas, le mieux est le META REFRESH comme je te l'ai indiqué.
Il y a 1414 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.

crazycat@idn