Azt hittem, hogy csempészhetek egy kis JavaScript feelinget a PHP-be, sajnos nemsikerült. Vagyis csak félig.
PHP-ben akartam megoldani, hogy az itemek egy ciklusból csak szép sorjában íródjanak ki a képernyőre. Tehát futás közben már renderelődjön is a tartalom a böngészőben.
Ennek tesztelésére készítettem egy rövid kódot:
<?php
$date = new DateTime("now", new DateTimeZone("Europe/Budapest"));
for($i=0; $i<10; $i++){
echo ($i + 1) ." - ". $date->format('Y-m-d H:i:s') . " OK <br />";
sleep(1);
}
Ezt feltettem a ReplIt.Com-ra. [Link]
A kód itt szépen fut, úgy ahogy nekem jó is lenne. Tehát a PHP futása közben íródnak ki az echo parancsban a ciklus indexek, a dátum és az "OK". [Demo Replit.com]
Kezdtem is örülni, hogy ennek milyen szépen hasznát tudom majd venni egy éles alkalmazásnál, de sajnos itt jött a meglepetés. A saját szerverre feltöltve a kódot látom, hogy a PHP output kiíratása csak a ciklus lefutása után történik meg. [Demo Saját szerver]
A problémáról videót is készítettem, hogy jobban látható legyen, hogy mi is a probléma, mi is történik
Lapozgattam a fórumokat különböző megoldások után, de sajnos egyik sem segített (ob_flush(), ob_start() és társai). A PHP.ini-ben az output_buffering-et Off állapotba tettem. Ez utóbbi sem segített sajnos.
Most ott tartok, hogy különböző fórumokon és blogokon feltettem a kérdést, hátha valaki segít majd.
Sajnos a a PHP nem JavaScript, ahol egy sima setInterval megoldaná az ilyesmit.