Topic: Flush PHP fonctionne sur localhost, mais pas sur l'hébergement distant
Bonjour,
Comme le titre l'indique, j'ai un script PHP qui prend un peu de temps car il modifie tous les scores des joueurs d'une équipe. J'ai essayé d'optimiser, mais quoi que je fasse le temps d'enregistrement peut aller vers les 30 secondes... et parfois, j'obtiens un timeout 503...
Après recherches (car tout ça est un peu au-dessus de mes modestes moyens de développeur amateur), j'ai crû comprendre que le problème était l'envoi d'aucune information au navigateur pour maintenir la connexion.
Je me suis odnc mis en tête d'essayer d'envoyer les infos en continu avec ce genre de code :
/**
* Output span with progress.
*
* @param $current integer Current progress out of total
* @param $total integer Total steps required to complete
* @param $message string Message to display
*/
function outputProgress($current, $total, $message='Please wait') {
echo '<div class="well text-center" style="position: absolute; width:100%; z-index:$current;">';
echo '<span>'.$message.'</span>';
echo ' <span>('.round($current / $total * 100).'%)</span>';
echo '</div>';
myFlush();
sleep(1);
}
/**
* Flush output buffer
*/
function myFlush() {
echo(str_repeat(' ', 256));
if (@ob_get_contents()) {
@ob_end_flush();
}
ob_flush();
flush();
}
et en appelant outputProgress() dans ma boucle gérant l'enregistrement des scores pour chaque joueur. L'idée est donc d'afficher un % à chaque joueur.
Tout fonctionne très bien sur mon localhost, cool! MAIS... sur le serveur, l'enregistrement patauge comme avant et rien ne s'affiche avant la fin du script. Bref, c'est raté :(
J'ai tenté tout ce que je pouvais trouver sur Internet sans succès...
Donc je m'adresse à vous, techniciens avertis et fins connaisseurs de tout ça : auriez-vous une idée sur ce que je peux faire ???
Merci d'avance pour votre aide, et n'hésitez pas à me demander s'il vous faut des informations complémentaires.