Sto cercando di familiarizzare con la funzione flush() di PHP per un progetto che sto facendo, ho scritto alcuni script personalmente e li ho caricati su qualche spazio web di mia proprietà; ma sembrava che nessuno di loro funzionasse. Ho preso quella qui sotto da un commento sulla PHP.net e l'ho provato:PHP flush() apparentemente funziona sulla mia macchina Linux ma non sulla mia macchina Windows?
<?php
header('Content-type: text/html; charset=utf-8');
echo 'Begin ...<br />';
for($i = 0 ; $i < 10 ; $i++)
{
echo $i . '<br />';
flush();
sleep(1);
}
echo 'End ...<br />';
A quanto pare lo script ANCORA non funzionava.
Ho poi letto un commento che ha detto:
Se si chiama ob_flush() e flush() e ancora non ottenete il buffer lavata potrebbe essere perché alcuni software antivirus (Panda in questo caso) detiene il buffer fino a quando la pagina non è stata caricata prima di inviarla al browser.
Così ho deciso di richiedere la pagina Web su una macchina che utilizzo Linux (Ubuntu 12.04) in quanto non ha installato alcun software antivirus; e ha funzionato perfettamente!
Non ho idea se questo ha a che fare con il software antivirus? O qualche altro strano meccanismo in Windows che impedisce a flush() di raggiungere lo scopo previsto, sto utilizzando lo stesso browser su entrambe le macchine (Firefox 14.0.1) quindi dubito che possa essere così.
Quindi immagino che la mia vera domanda sia: qualcuno sa qualcosa del software anti-virus che impedisce a flush() di raggiungere il suo scopo prefissato (perché non riesco a trovare nulla a riguardo online)? E se è così, c'è un modo per aggirarlo?
EDIT: Solo per chiarire, sono sicuro che questo NON è lato server, ho un server web esterno che esegue Linux, non sto ospitando questi script localmente su Linux o Windows Machine.
EDIT2: ho provato questo intorno ad una casa di amici sul portatile Linux che sono riuscito a farlo funzionare su a casa mia, stranamente il codice colore, inoltre, non ha funzionato a casa loro (invece solo sono voluti secoli per caricare e tutto è venuto fuori in una volta) il che è strano visto che funziona su questo laptop a casa mia, non sono sicuro che i router abbiano a che fare con la funzione flush() funzionante (non riesco davvero a trovare nulla a riguardo sul web) perché questa è l'unica cosa che posso pensare che potrebbe interferire con esso.
Altrimenti non ho fatto progressi nel tentativo di aggirare questo da solo, questo non ha assolutamente a che fare con il server end, il che è strano dato che la maggior parte delle informazioni che trovo sta parlando del fatto che il server è il problema quando la funzione flush() non funziona:/
Per coincidenza ho provato anche su un PC con Norton (invece di AVG) a casa mia, funzionava ma non del 100%.
So che questo è sicuramente lato client e non lato server, però, la stessa pagina ha funzionato perfettamente quando resa in Firefox in Linux, ma non va bene sotto Windows. Il che mi porta a pensare che anche questo non sia un problema relativo al browser. . . quello sembra eliminare tutte le spiegazioni in quella citazione:/ – Sean
@SeanDunwoody: Come sapete che non è lato server? Il server è un programma diverso sotto ciascun sistema operativo. Lo stesso vale per il browser. – Jon
No, mi dispiace che tu frainteso, ho un server che ospita questo Linux funzionante, non sto ospitando questa localmente su entrambi macchina – Sean