Közlemény

Collapse
No announcement yet.

IIS10 szerveren PHP script nem tud végrehajtás közben a képenyőre írni, csak mikor lefutott

Collapse
X
 
  • Filter
  • Idő
  • Show
Clear All
new posts

  • Karcsi
    replied
    Erre van egy jobb trükk is:

    Kód:
    // Egy 7,5 millió karakter hosszú szóköz karakterláncot állít elő és jelenít meg,
    // hogy a válasz gyorsan megjelenjen a képernyőn, és megakadályozzuk a bufferelést, különösen, ha lassan (több perc alatt) fut le a script.
    
    echo str_repeat(" ", 7500000);
    Így működik az egész:

    HTML kód:
    <html>
    <body>
         <?php
         echo str_repeat(" ", 7500000);
    
         for ($counter = 0; $counter <= 10; $counter++) {
              echo "Message after " . $counter . " second(s)<br>";
              ob_flush();
              flush();
              sleep(1);
              }
         ?>
    </body>
    </html>
    Last edited by Karcsi; 2024-11-06, 17:37.

    Leave a comment:


  • Nic
    replied
    Próbáld meg ezt (feltéve, hogy a PHP-t FastCGI modulként telepítetted a telepítési utasításoknak megfelelően, PHP_via_FastCGI néven):

    Keresd meg a szerveren a %windir%\System32\inetsrv\config könyvtárban az applicationHost.config fájlt.

    A fájlban add hozzá a PHP_via_FastCGI sorhoz a responseBufferLimit="0" szöveget. így fog kinézni az egész sor:

    Kód:
    <add name="PHP_via_FastCGI" path="*.php" verb="*" modules="FastCgiModule" scriptProcessor="C:\PHP\php-cgi.exe" resourceType="Either" responseBufferLimit="0" />

    Parancssorból is megcsinálhatod:

    Kód:
    %windir%\system32\inetsrv\appcmd.exe set config /section:handlers "/[name='PHP_via_FastCGI'].ResponseBufferLimit:0"

    Leave a comment:


  • IIS10 szerveren PHP script nem tud végrehajtás közben a képenyőre írni, csak mikor lefutott

    Az idegesít, hogy IIS webszerveren a hosszú ideig (akár 1-2-3 percen keresztül) futó PHP scriptek nem tudnak semmit kiírni a képernyőre futás közben, nem látom, hol tartanak, nem látom, elkakadt-e valahol, vagy nem, jó lenne üzeneteket látni a képernyőn menet közben is, nem csak a végén.

    Már próbálkoztam azzal, hogy hozzáadtam a PHP script elejéhez:

    Kód:
    ini_set('zlib.output_compression', 0);
    ini_set('implicit_flush', 1);​
    Illetve egy-egy képernyőre kiíratás után:

    Kód:
    // ez ahhoz kell, hogy menet közben is írjon a képenyőre
    ob_flush();
    flush();​
    De még mindig nem működik. Ötletek?
Working...
X