J’utilise un Apache 2.2.1 avec PHP 5.3.8 sur un système Linux.
Je dois vider l’en-tête au début de l’appel, mais le navigateur attend que le contenu complet soit livré.
Sur la ligne de commande, en utilisant “php test.php”, tout fonctionne comme prévu, mais pas dès qu’Apache est impliqué.
J’ai tout essayé Définir le output_buffer = Off, zlib.output_compression = Off, désactivé mod_deflate, SendBufferSize 512. J’ai également utilisé toutes les méthodes de vidage dans php. Mais comme je l’ai dit, sur la ligne de commande, cela fonctionne très bien.
Voici l’en-tête de réponse:
J’ai enlevé tous les modules, à l’exception de ceux-ci:
J’espère qu’il y a quelqu’un qui peut m’aider
Il est très probable que Apache vienne bien, mais c’est le navigateur qui décide de continuer à mettre en tampon (et non à lancer le rendu) pendant un certain temps, même après la réception des données vidées.
De la documentation :
flush()
peut ne pas être en mesure de remplacer le système de mise en mémoire tampon de votre serveur Web et cela n’a aucun effet sur la mise en mémoire tampon côté client dans le navigateur .
Il n’y a rien que vous puissiez faire à ce sujet, hormis les piratages spécifiques au navigateur, comme l’envoi de nombreux espaces (j’ai dû y recourir il y a plusieurs années) pour que le navigateur “reconsidère”.
Vous devriez essayer d’envoyer la page avec un autre content-type
content-type
ou sans content-type
. Dans notre serveur, nous avions le même problème et nous avons découvert que mod_security
bloquait le flush lorsque le content-type
était HTML.