Hébergements Web - Problème de buffering de contenu text/event-stream
BMPCreated with Sketch.BMPZIPCreated with Sketch.ZIPXLSCreated with Sketch.XLSTXTCreated with Sketch.TXTPPTCreated with Sketch.PPTPNGCreated with Sketch.PNGPDFCreated with Sketch.PDFJPGCreated with Sketch.JPGGIFCreated with Sketch.GIFDOCCreated with Sketch.DOC Error Created with Sketch.
Frage

Problème de buffering de contenu text/event-stream

Von
Community Deleted user
Erstellungsdatum 2018-07-25 08:31:50 (edited on 2024-09-04 12:35:11) in Hébergements Web

Bonjour,
Je rencontre un problème dont je ne me sors pas. J'espère que quelqu'un aura une idée.

Sur mon site WEB, j'ai une page qui utilise du Server-Sent Events pour afficher une sorte de log au fil de l'eau depuis le serveur.
Sur mon site OVH, j'ai un problème, les données ne sont pas envoyées au fil de l'eau comme elles devraient (et comme elles le sont sur mes environnements Php de dév et de test). Tout est envoyé à la fin du traitement comme si c'était bufferisé quelque part malgré toutes mes désactivations de buffers et mes flushs.

voici le code serveur utilisé pour reproduire le problème :
ini_set('output_buffering', 'off');
ini_set("zlib.output_compression", 0); // off
ini_set("implicit_flush", 1); // on
ob_implicit_flush(true);
ob_end_flush();
ob_end_clean();
header('Content-Type: text/event-stream');
header("Cache-Control: no-cache, no-store, must-revalidate");
for ($i = 1; $i <= 4; $i++) {
echo "id: ".$i.PHP_EOL;
echo 'data: '.date("Y-m-d h:i:s",time())." ping".PHP_EOL.PHP_EOL;
ob_end_flush();
flush();
sleep(5);
}
sleep(10);
print_r(ini_get_all());
?>

url de cette page de test : http://www.zeolitop.com/test/test.php



c'est censé :
- désactiver toutes les causes potentielles de bufferisation
- afficher un événement toutes les 5 secondes pendant 20 secondes
- attendre 10 secondes
- afficher l'environnement php

Ce que ça fait très bien sur tous mes environnement sauf sur mon hébergement ovh sur lequel ça affiche tout au bout de 30s comme si tout était bufferisé jusqu'à ce que le script se termine.

ma config ovh :
app.engine=php
app.engine.version=5.6
http.firewall=none
app.engine=phpcgi
environment=development

je n'ai rien trouvé dans la doc OVH et épuisé toutes mes idées...
J'espère que vous pourrez m'aider.


1 Antwort ( Latest reply on 2023-05-16 07:12:59 Von
00254db7068eb737e432
)

Avez vous tester en passant sur l'environnement plus récent ?

app.engine=php
app.engine.version=7.2
http.firewall=none
environment=production
**container.image=stable**

oui, c'est exactement pareil avec ces paramètres là.
ca n'a pas l'air de venir de la version de Php (idem en 5.6 et 7.2) ni du paramètre environment (idem en development ou en production)

Bonjour,

Avez vous reussi a regler votre problème?
J'ai exactement le même et je trouve aucune solution.

header('Content-Type: text/event-stream');
header('Cache-Control: no-cache');

Ca marche très bien en server local (Apache) et me renvoie un Content-Type: text/html; charset=UTF-8 sur le serveur d'OVH.

A l'aide !!!!!

Oui, j'ai ouvert un ticket en leur décrivant le problème et ils m'ont répondu "c'est réglé".
En effet, cela fonctionnait.
Je vous suggère de faire la même opération

Bonjour
Meme problème la commande
ob_implicit_flush ne fonctionne pas
J'ai ouvert un ticket on va voir.
Merci,
Christophe