ciao expert
questa estate mi ero imbattuto pure io in questo prblema e ho fatto diverse prove proprio come te. (frameset con frame di lettura e aggiornamento).
il sistema utilizza l' ob_flush() e funziona piu o meno così:
un file txt di bridge
una index con 2 frames in cui ci sono
un file send.php per invio messaggio
un reader.php per visualizzare l'elenco messaggi
come funziona?
innanzi tutto il reader non fa altro che leggere uil contenuto del file di test in loop, e se trova contenuti nuovi li spara a video utilizzando l' ob_flush()
L' ob_flush ha la particolarità che riesce a mantenere aperto lo streaming dal server al client, e manda i dati in output in tempo reale... quindi la latenza tra un messaggio appena scritto e la sua lettura verso tutti è molto bassa. In questo modo inoltre avevo per ogni client una sola richiesta aperta da apache e continuativa, il che mi dava l'impressione che fosse il server ad aggiornare i dati lato client e non viceversa dove i clients ogni tot secondi si ricaricano la pagina
il sender invece non fà altro che scrivere i dati sul file di testo.
svantaggi?
2 principalmente:
- apache fa fatica a mantenere per molto tempo aperto lo stream e potrebbe dare problemi rilevanti
- se uno fa STOP dal proprio browser la connessione si interrompe
ok. funzionava in locale.. figo! adesso provo con un db, senza file di testo....
appena fatto, non sò come mai, utilizzando mysql il sistema di streaming cadeva ....
quindi devo evitare di fare select e insert lato database...
la soluzione per me è stata quindi quella di avere un file di testo come ponte di connessione server <--> client, e a cadenze regolari uno script passa, preleva i vecchi messaggi dal file cancellandoli.
spero di esserti stato di aiuto!!
![]()