Spero di poterlo spiegare abbastanza bene. Sto lavorando alla creazione di PHP library to handle ajax requests through PHP in modo orientato agli oggetti. Attualmente sto riflettendo su un buon modo per implementare una lunga soluzione di sondaggio, ma sono curioso di qualcosa.Polling lungo con PHP su Apache
Apache non gestisce il mantenimento di connessioni multiple aperte molto bene. Il modello thread-per-request rende Apache estremamente inefficiente per il polling lungo. L'utilizzo di server come nginx e lighttpd gestisce questi thread molto meglio quindi nella libreria, ho in programma di implementare diverse funzioni ottimizzate per i server specifici disponibili da una singola chiamata di funzione. Nel caso di Apache, che ha un'enorme quota di mercato per le applicazioni PHP, ho bisogno di una soluzione migliore.
C'è un modo per mettere una richiesta in arrivo in attesa/pausa e continuare l'elaborazione di altre richieste fino a quando non sono pronto a riattivarlo?
Non sono sicuro che abbia senso o se sono sulla buona strada. Qual è una possibile soluzione che SO consiglia per un lungo polling in PHP su un server Apache?
perché sospendere l'elaborazione sul server? non farebbe aspettare molto il tuo utente? – Joseph
Con Apache, utilizza un modello thread-per-request in modo che una richiesta iniziale di pagina in un'applicazione utilizzi un thread e quindi la richiesta ajax (chiamata una volta caricato il DOM) utilizzerà un thread separato. Il problema è che il tentativo di traffico di volumi elevati genererà migliaia di thread e in definitiva disabiliterà il server. –
Abbiamo avuto un problema simile, dopo aver acceso carichi di pagina polling lunghi ajax/PHP caricati casualmente (cca ogni 4-5 carichi) impiegando troppo tempo ... per ora e solo per le notifiche l'ho risolto con NOT sleep() in PHP in qualsiasi modo e spostato la funzionalità timewait in javascript, quindi ora javascript richiede ogni nuova esecuzione PHP ad esempio 10s ma il caricamento della pagina sembra essere OK ora. –