J'ai déplacé mes fichiers sur un nouveau serveur et j'ai eu un script qui a montré instantanément une sortie sur chaque echo code> sur le navigateur, mais cela ne fonctionne pas sur le nouveau serveur. Voici mon code de test:
@ini_set('output_buffering', 0); @ini_set('implicit_flush', 1);
for ($i = 0; $i < ob_get_level(); $i++) ob_end_flush();
ob_implicit_flush(1);
ignore_user_abort(true); set_time_limit(0);
$max_wait_time = 30;
$begin_time = microtime(true);
$elapsed_time = 0;
while(!connection_aborted()) {
echo $i++.str_repeat(' ', 1020).'<br/>';
flush(); ob_flush();
usleep(1000000);
if($elapsed_time > $max_wait_time){ break; }
$elapsed_time++;
}
4 Réponses :
Les navigateurs décident d'eux-mêmes quand de produire du contenu. Donc, si vous ne rencontrez pas ce seuil, ils n'attendront qu'elles ne sont pas remplies et ne montrent que plus de contenu à l'utilisateur. P>
C'est vrai, mais je ne pense pas que ce soit le cas pour moi puisque cela fonctionnait tout simplement bien lorsque vous utilisez un hôte différent dès que je l'ai mis sur le temple des médias, cela a commencé à se produire. Donc, je ne pense pas que c'est une question de navigateur.
Vous voulez dire des serveurs, non? Il appartient aux navigateurs lorsqu'ils afficheront le contenu, mais ils vont sucer quelque chose que les serveurs envoient, quand il est envoyé.
Ils le sucent, mais cela ne veut pas dire qu'ils le montreront tout de suite. Ou alors on m'a dit ...
extrait de la Flush code> Documentation
: P>
Flush () Peut ne pas pouvoir remplacer Le schéma tampon de votre web serveur et il n'a aucun effet sur aucun tampon de côté client dans le navigateur. [...] p>
Plusieurs serveurs, en particulier sur Win32, va toujours tamponner la sortie de votre script jusqu'à ce qu'il se termine avant transmettre les résultats à la Navigateur. P>
modules de serveur pour Apache comme mod_gzip peut faire tampon de leur propre cela causera de flush () à ne pas résulter dans les données étant envoyées immédiatement à la client. p> blockQuote>
chances sont élevés que vous avez changé dans un serveur Web différent (ou une configuration de serveur Web), qui tamponne la sortie de l'ensemble du script avant de le sortir. P>
C'est la meilleure réponse que vous êtes susceptible d'obtenir. Malheureusement, comme indique la documentation clush () code>, vous ne pouvez pas garantir [à partir de PHP] qu'il n'y a rien d'autre mise en mémoire tampon des données. Messing avec les paramètres Apache pourrait aider, si c'est possible pour vous, mais sinon je suggérerais de visant une solution alternative.
Le réglage que vous recherchez est dans votre php.ini et c'est ce qu'on appelle la sortie_buffering: réglez-le à pied manuellement et redémarrez votre serveur Web pour faire rinquer () encore affleurer quelque chose quand Vous le souhaitez, pas après 4kb de données :) p> Notez que INI_SET ne doit pas toujours nécessairement fonctionner pour cela. Si vous voulez un contrôle total, désactivez-le dans PHP.ini elle-même, ou comme un drapeau PHP_Value. HTACCES P> P>
essayer d'ajouter à .htaccess