2013-02-14 11 views
9

Gdybym wykonać:Czy die() kończy sesję w PHP?

die(); 

Będzie to również skutecznie wywołać

session_write_close(); 

Ponieważ matryca zatrzymuje cały proces?

+3

Tak to będzie ten sam sposób dowolny zakończenie skrypt będzie. Destruktory obiektów również będą działać; chociaż nie mam pewności co do pliku auto_append_file –

+1

żadna sesja się nie zakończy. umierać(); tylko zatrzymuje wykonywanie skryptu. – ripa

Odpowiedz

11

No. Jak widać na stronie PHP: http://www.php.net/manual/en/function.exit.php (bo umrzeć jest równoważna zjazdu)

funkcji wyłączania i destruktory obiektów zawsze będą wykonywane nawet jeśli wyjście jest tzw.

ALE, session_write_close NIE jest funkcją wyłączania. Nie będzie działać, jeśli "umrzesz". Proponuję zapoznać się z session_register_shutdown. Spowoduje to zarejestrowanie session_write_close() jako funkcji wyłączania, w takim przypadku uruchomi się na "die".

Więcej informacji: http://www.php.net/manual/en/function.session-register-shutdown.php

7

die i exit są równoważne. Od dokumentów:

Kończy wykonywanie skryptu. Funkcje wyłączania i destruktory obiektów będą zawsze wykonywane nawet po wywołaniu wyjścia.

Więc php nadal będzie postępować zgodnie z procedurą czyszczenia. W każdym razie, jeśli chcesz zrobić coś niestandardowego po wyłączeniu skryptu, możesz zarejestrować funkcję wyłączania przy użyciu register_shutdown_function.

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

register_shutdown_function('shutdown'); 

Uwaga: jeśli zarejestrować swoją funkcję zwyczaj zamykania zostanie on również nazywany gdy wystąpi błąd krytyczny.

Powiązane problemy