2013-02-14 1 views
9

Если я выполняю:Does die() завершает сессию в PHP?

die(); 

Будет ли также эффективно называть

session_write_close(); 

Поскольку матрица останавливает весь процесс?

+3

Да будет, так же, как любое прекращение скрипт будет. Также будут выполняться деструкторы объектов; хотя я не уверен в каком-либо файле auto_append_file –

+1

никакой сессии не будет конца. умереть(); только прекращает выполнение скрипта. – ripa

ответ

11

No. Как вы можете видеть на странице PHP: http://www.php.net/manual/en/function.exit.php (потому что умереть эквивалентен выхода)

Shutdown функция и объект деструкторы всегда будет выполняться , даже если выход называется.

НО, session_write_close НЕ является отключенной функцией. Он не будет работать, если вы «умрете». Я предлагаю вам посмотреть session_register_shutdown. Это зарегистрирует session_write_close() как функцию выключения, и в этом случае он будет работать на «die».

Дополнительная информация: http://www.php.net/manual/en/function.session-register-shutdown.php

7

die и exit эквивалентны. Из документов:

Завершение выполнения сценария. Функции выключения и деструкторы объектов всегда будут выполняться, даже если вызывается exit.

Так что php по-прежнему будет выполнять процедуру очистки. В любом случае, если вы хотите сделать что-то обычное при завершении сценария, вы можете зарегистрировать функцию выключения, используя register_shutdown_function.

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

register_shutdown_function('shutdown'); 

Примечание: если вы регистрируете вашу пользовательскую функцию отключения также будет вызываться, когда фатальная ошибка происходит.

Смежные вопросы