2013-02-14 15 views
9

Se eseguo:muore() termina la sessione in PHP?

die(); 

Sarà anche chiamare in modo efficace

session_write_close(); 

Perché morire interrompe l'intero processo?

+3

Sì lo farà, allo stesso modo qualsiasi cessazione script darà. Anche i distruttori di oggetti verranno eseguiti; anche se non sono sicuro riguardo a auto_append_file –

+1

nessuna sessione non finirà. morire(); interrompe solo l'esecuzione dello script. – ripa

risposta

11

No. Come si può vedere nella pagina PHP: http://www.php.net/manual/en/function.exit.php (perché muoiono equivale a uscita)

funzioni di arresto e distruttori degli oggetti saranno sempre eseguite anche se l'uscita è chiamato.

MA, session_write_close NON è una funzione di arresto. Non funzionerà se "muori". Suggerisco di esaminare session_register_shutdown. Questo registrerà session_write_close() come funzione di spegnimento e in questo caso, verrà eseguito su "die".

Ulteriori informazioni: http://www.php.net/manual/en/function.session-register-shutdown.php

7

die e exit sono equivalenti. Dalla documentazione:

termina l'esecuzione dello script. Le funzioni di spegnimento e i distruttori di oggetti verranno sempre eseguiti anche se si chiama exit.

Quindi php eseguirà ancora la routine di pulizia. Ad ogni modo, se vuoi fare qualcosa di personalizzato allo spegnimento dello script, puoi registrare la funzione di arresto usando register_shutdown_function.

function shutdown() 
{ 
    //Some custom clean-up, logging and so on 
} 

register_shutdown_function('shutdown'); 

Nota: se si registra la funzione di spegnimento personalizzato sarà inoltre chiamata quando si verifica errore fatale.