2009-09-15 10 views

risposta

5

Per eseguire PHP app per sempre o fino a quando termina php

ignore_user_abort(true); 

set_time_limit(0); 
+0

sembra pericoloso se la pagina viene richiesta frequentemente, il server potrebbe avere un numero elevato di processi che non stanno facendo nulla. – rsman

4

potreste essere interessati dalla direttiva di configurazione ignore_user_abort, e/o la funzione ignore_user_abort:

Imposta se una disconnessione client dovrebbe causare uno script per essere interrotta.

Usando questo, si potrebbe:

  • generare la parte della pagina che deve essere inviato al browser
  • a filo l'uscita, con flush e/o ob_flush
  • chiamata ignore_user_abort(ora o prima)
  • fare altri lavori

Il browser dell'utente probabilmente indicherà ancora "in attesa" o "caricamento", ma il contenuto della pagina verrà caricato e visualizzato e, anche se l'utente preme "stop", lo script dovrebbe continuare la sua esecuzione.

Per maggiori informazioni, non v'è un esempio nella pagina del manuale di quella funzione - e si può dare un'occhiata a questo articolo: How to Use ignore_user_abort() to Do Processing Out of Band


Naturalmente, mentre questo può essere utilizzato per un certo processo di luce (come "ripulire" la roba alla fine di una pagina, mentre lo visualizzi il più velocemente possibile per l'utente), sarai comunque limitato da max_execution_time e simili.

Quindi, questa non è una soluzione da utilizzare per calcoli lunghi/pesanti.

Problemi correlati