Ignorare lo stop dell'utente in PHP
Il titolo probabilmente non identifica al 100% cosa vogliamo ottenere.
In pratica vogliamo lanciare uno script PHP, chiudere il browser e fare in modo che lo script continui fino alla fine.
Per farlo possiamo usare la funzione ignore_user_abort!
Ovviamente state attenti allo script che lanciate: nei test che ho fatto sono stato costretto a riavviare Apache più volte!
Comunque ecco un esempio:
ignore_user_abort(TRUE);
set_time_limit(0);
$count = 0;
do {
$file = fopen("test.txt", "w");
fwrite($file, $count++ . "rn");
fclose($file);
sleep(3);
if ($count == 30) {
break;
}
} while (TRUE);
In pratica abbiamo un ciclo infinito.
Ogni 3 secondi incrementiamo il counter e lo scriviamo nel file.
Quando arriva a 30, usciamo.
Per fare un test facciamo così:
- caricate il file sul server
- lanciatelo nel browser
- aprite il file test.txt in maniera interattiva (ad esempio col comando tail -f di Linux)
- chiudete il browser
In console vedrete che il file continua ad essere modificato.
Enjoy!
php ignore_user_abort
Commentami!