Sono responsabile della parte di backend di un'API, scritta in PHP, che viene principalmente utilizzata da un client Flash. Quello che succede ora è: il client Flash effettua una chiamata, il back-end carica i dati necessari, esegue qualsiasi elaborazione e post-elaborazione, registrazione e memorizzazione nella cache e restituisce il risultato al client.PHP + gzip: chiudi connessione e continua a eseguire
Quello che mi piacerebbe che succedesse è restituire i dati al client il più presto possibile, chiudere la connessione, e poi fare tutto ciò di cui il cliente non deve preoccuparsi. Ciò potrebbe rendere l'API molto più reattiva. Seguendo i suggerimenti qui:
http://php.net/manual/en/features.connection-handling.php
effettivamente funziona, solo che devo disattivare la codifica gzip al fine di farlo funzionare, il che non è molto pratico. Usiamo mod_deflate in apache, quindi una soluzione che funzioni sarebbe ideale, ma prenderei anche in considerazione un metodo diverso per gzip il nostro contenuto, se necessario.
E sembra come dovrebbe esserci un modo per far sapere ad Apache "Ti ho mandato tutti i dati che sto per inviare", ma non riesco a trovare nulla di simile.
Per coloro che si chiedono, sì, posso svuotare i risultati in anticipo, ma il client Flash non li elabora fino a quando la connessione non viene chiusa.
Grazie. Sono a conoscenza di alcuni accorgimenti per questo problema, alcuni più eleganti di altri, ma mi piacerebbe davvero trovare un modo per dire semplicemente ad Apache di smettere di aspettare l'output e chiudere la connessione. :) –