Maison  >  Article  >  développement back-end  >  Solution à l'utilisation non valide de Flush pour la sortie PHP en temps réel sous IIS7

Solution à l'utilisation non valide de Flush pour la sortie PHP en temps réel sous IIS7

*文
*文original
2017-12-29 18:06:111765parcourir

Cet article présente principalement la méthode de vidage php invalide et la sortie php en temps réel sous IIS7. Les amis dans le besoin peuvent s'y référer. J'espère que cela aide tout le monde.

Dans une opération relativement longue, je souhaite enregistrer l'opération et l'afficher en temps réel sur le navigateur. J'utilise flush() pour envoyer le contenu du tampon au navigateur. Mais dans iis7, PHP configuré en mode fastcgi ne peut pas être implémenté et les résultats sont toujours affichés ensemble.

for ($i=10; $i>0; $i--)
{
  echo $i.&#39;<br />&#39;;
  @ob_flush();
  flush();
  sleep(1);
}

Le code ci-dessus ne peut pas afficher progressivement les résultats sous les paramètres par défaut d'IIS. La solution est la suivante :

Ouvrez le fichier C:WindowsSystem32inetsrvconfigapplicationHost.config Notez que si votre système est un système 64 bits, ce fichier doit être ouvert avec un logiciel d'édition 64 bits. Le logiciel 32 bits vous indiquera que le fichier n'existe pas. Ouvrez-le simplement avec le Bloc-notes fourni avec le système. Recherchez le paragraphe suivant et ajoutez le code rouge, c'est-à-dire ajoutez ResponseBufferLimit="0" au gestionnaire php.

<handlers accessPolicy="Read, Script">
<add name="PHP_via_FastCGI" path="*.php" verb="*" modules="FastCgiModule" scriptProcessor="E:\PHP\php-cgi.exe" resourceType="Either" responseBufferLimit="0" />

Vous pouvez maintenant l'essayer. Si cela ne fonctionne toujours pas, définissez output_buffering = Off dans php.ini.

Le dernier point est très important. Il produira des résultats différents selon les navigateurs. Il ne devrait y avoir aucun problème dans IE. Si vous utilisez Chrome, chaque contenu d'écho doit contenir du HTML, sinon cela ne fonctionnera pas. De plus, si le contenu d'écho est trop court, cet effet ne peut pas être obtenu avant le code. Un espace, tel que : echo str_pad(' ", 1050); Chrome semble devoir d'abord générer plus de 1 000 caractères pour avoir cet effet. Si cela ne fonctionne pas, essayez-en davantage.

Recommandations associées :

analyse des journaux php IIS enregistrement du robot du moteur de recherche program_php instance

Configuration PHP IIS6.0 pseudo-statique invalide, comment y faire face

Windows Server 2008 php IIS ne peut pas télécharger de fichiers volumineux à l'aide de uploadify Upload solution

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn