Ignorare lo stop dell'utente in PHP

Mattepuffo's logo
Ignorare lo stop dell'utente in PHP

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!


Condividi

Commentami!