Autor | Zpráva | ||
---|---|---|---|
Andrej.B Profil |
#1 · Zasláno: 31. 10. 2023, 10:24:48
Zdravim,
ak funguje tato cast kodu na localhoste <?php header( 'Content-type: text/html; charset=utf-8' ); echo 'Begin ...<br />'; for( $i = 0 ; $i < 10 ; $i++ ) { echo $i . '<br />'; flush(); ob_flush(); sleep(1); } echo 'End ...<br />'; ?> Begin ... 0 1 2 3 4 5 6 7 8 9 End ... Je nieco, co treba zapnut/vypnut na producnom servery? Alebo chapem nieco zle. Diky |
||
anonym_ Profil * |
#2 · Zasláno: 31. 10. 2023, 11:05:39
Andrej.B:
Nemáš na localhostu nějakou hodně starou verzi PHP? Kdyžtak si porovnej phpinfo() obou serverů, jak jsou nastavené. Mě se vypíše vše až po 10s, imho by to tak mělo fungovat (na serveru se něco zpracuje a pak pošle do prohlížeče). Pro postupný výpis v časovém intervalu použij JS. Mimochodem: www.php.net/manual/en/function.sleep.php#refsect1-function.sleep-examples ...kód podobny tvému: „This example will output (after 10 seconds)“ |
||
Keeehi Profil |
#3 · Zasláno: 31. 10. 2023, 12:46:09
Andrej.B:
Je potřeba aby bylo "všude všechno vypnuté". Jde nejen o konfiguraci PHP ale i o konfiguraci webserveru (apache/nginx/...). Například pokud bude na serveru zapnutá komprese výstupu, PHP to sice bude posílat každou vteřinu, server si to ale bude ukládat v paměti a pošle to teprve až to bude mít celé. Je to z důvodu že aby to mohl server komprimovat, musí znát celý obsah. A těch věcí, co mohou stát v cestě tomu postupnému odesílání je více. |
||
Andrej.B Profil |
anonym:
praveze na locale mam 8.1 a na producnom 7.4.9. moj testovaci skript na locali funguje ako chcem. Teda kazdu sekundu vypise na obrazovku cislo 1 az 9. Na produkcnom caka celych 10 sekund avypise naraz cisla 1 az 9 pod sebou. Co je nieco, co nechcem. Keeehi: Co vsetko mam pozriet v php.ini aby bolo rovnake? Inak kompresia je zapnuta, podla www.whatsmyip.org/http-compression-test, cize bude stacit ju vypnut v configu Apache? alebo nechat zapnutu a vypnut ak sa da, az v tom scripte ktory potrebujem? |
||
Časová prodleva: 7 dní
|
|||
Davex Profil |
#5 · Zasláno: 7. 11. 2023, 22:49:56
Keeehi:
„Například pokud bude na serveru zapnutá komprese výstupu, PHP to sice bude posílat každou vteřinu, server si to ale bude ukládat v paměti a pošle to teprve až to bude mít celé. Je to z důvodu že aby to mohl server komprimovat, musí znát celý obsah.“ Souhlasím, většinou ano, ale za vhodných okolností jde nastavit, aby flush() způsobil okamžité odeslání částečně komprimovaných dat. Například při použití Apache v kombinaci mod_proxy_fcgi a PHP FPM viz parametr v příkladech: flushpackets=on.
|
||
Krakatoa Profil |
Jen taková poznámka ke kompresi.
Na tom localhostě by mu to nejspíš jelo i s kompresí. Na localhostě mám: Windows 10 Apache/2.4.58 PHP/8.2.12 (apache2handler) OpenSSL/3.1.4 HTTPS (HTTP/2) Přenos komprimován pomocí BROTLI. A normálně mi ob_implicit_flush(); výstup kouskuje po částech s časovou mezerou s tím, že po shlédnutí v prohlížeči F12 komprimovaný přenost normálně funguje. A nic extra pro flush jsem nenastavoval, vše na default. |
||
Časová prodleva: 6 měsíců
|
0