Page 1 sur 1

envoi des données avant la fin du script

Posté : 17 oct. 2007, 11:37
par szambaux
Bonjour, j'ai écrit un script php qui est loader avec un LoadVariable depuis une animation flash, le code est le suivant

Code : Tout sélectionner

#si correspondant libre $signal = utf8_encode("En attente d'une réponse de votre correspondant"); echo "&signal=$signal"; echo "&signal2=1"; while ($accept != 1): sleep (2); $requete = "select accept from appel "; $connection = mysql_pconnect($server,$utilisateur, $mdp)or die ("erreur de connexion"); mysql_select_db($basededonnees, $connection) ; $resultat = mysql_query($requete,$connection) ; mysql_close($connection); $result = mysql_fetch_array( $resultat ); $accept = $result ['accept']; if ( $accept == 1) { echo "&allow=1"; } endwhile; } else { #si correspondant occupé $signal = utf8_encode("Votre correspondant est actuellement occupé"); echo "&signal=$signal"; echo "&signal2=0"; }
mon probleme c'est que j'aimerais que php envoi echo "&signal=$signal";
echo "&signal2=1"; avant d'attendre la fin du script
[/code]

Posté : 17 oct. 2007, 12:42
par Berzemus
techniquement, je crois qu'il le fait..

Posté : 17 oct. 2007, 12:49
par Tracker
Salut,

si tu veux contrôler un peu plus les choses,
- initilise la bufferisation de sortie avec ob_start(...), au début du traitement
- ensuite chaque fois que tu veux transmettre des infos appelle ob_flush(...)

Tracker.

Posté : 18 oct. 2007, 08:35
par titerm
le problème, c'est que php gère un tampon natif afin de maximiser les performances. Il n'envoie donc sur la sortie standard que lorsque le tampon est plein.
Tu peux néanmoins appeler flush() pour forcer php à vider les tampons de sortie mais il y aura d'autres tampons après que tu ne peux maîtriser. Ceux du serveur web (apache ou autre) et ceux du navigateur (et ceux des navigateurs sont gérer différemment en fonction des navigateurs).

Vu le peu de donnée que tu transmets, il y a peu de chance que tu arrives a tes fins en effectuant une seule requête GET. Il te faut séparer ton truc en plusieurs pages ou faire de l'ajax pour effectuer tes opérations.

Par ailleurs, ton code confus. Tu fais un if/else a cheval sur la fin du while.
Quand a la boucle while, il faut mettre un garde fou, sinon, attention les dénie de service et ne met dans le while que ce qui est nécessaire a la boucle. Le $requete= et la connexion bdd n'ont AMHA rien a faire dans le while.