Подтвердить что ты не робот

Как остановить выполнение кода PHP?

Есть ли способ немедленно остановить выполнение PHP-кода?

Я знаю exit, но в нем четко говорится:

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

Так что я хочу добиться, чтобы остановить выполнение PHP-кода точно, когда я вызываю выход или что-то еще.

Любая помощь?

Изменить: После ответа Дженсона

Пробный 1:

function newExit() {
    __halt_compiler();
}    
echo "start";
newExit();    
echo "you should not see this";

Показывает Fatal error: __HALT_COMPILER() can only be used from the outermost scope in, который был довольно ожидаемым.

Испытание 2:

function newExit() {
    include 'e.php';
}
echo "start";
newExit();
echo "you should not see this";

e.php просто содержит __halt_compiler();

Это показывает startyou не видеть это

Изменить: Почему я хочу это сделать?

Я работаю над приложением, которое включает проприетарную библиотеку (требуется через файл конфигурации виртуального хоста, к которому у меня нет доступа), который поставляется в виде зашифрованного кода. Это своего рода библиотека мониторинга для целей безопасности. Одним из его действий является то, что он регистрирует некоторые функции выключения, которые регистрируют статус экземпляра (он сохраняет статистику в базе данных).

Что я хочу сделать, это отключить этот журнал для определенных условий на основе (удаленный IP)

4b9b3361

Ответ 1

Пожалуйста, просмотрите следующую информацию от пользователя Pekka 웃

В соответствии с руководством деструкторы выполняются, даже если script завершается с помощью die() или exit():

Деструктор будет вызываться, даже если выполнение script прекращено с помощью exit(). Вызов exit() в деструкторе предотвратит выполнение остальных процедур выключения.
В соответствии с этим PHP: destructor vs register_shutdown_function деструктор выполняет не , когда выполняется ограничение времени выполнения PHP (подтверждено на Apache 2, PHP 5.2 на Windows 7).

Деструктор также выполняет не , когда script завершается, потому что достигнут предел памяти. (Только что протестировано)

Деструктор выполняет выполнение при фатальных ошибках (только что протестировано) Обновление: OP не может подтвердить это - кажется, есть фатальные ошибки, в которых все отличается

Выполняется не при ошибках разбора (потому что весь script не будет интерпретироваться)

Деструктор, конечно же, не будет выполнен, если произойдет сбой в работе сервера или какое-либо другое исключение из управления PHP.

Ссылка на этот вопрос Есть ли случаи, когда деструктор в PHP НЕ вызывается?

Ответ 2

Помимо очевидных die() и exit(), это также работает:

<?php
echo "start";
__halt_compiler();
echo "you should not see this";
?>

Ответ 4

Вы можете попытаться убить процесс PHP:

exec('kill -9 ' . getmypid());

Ответ 5

Я не уверен, что вы понимаете, что означает "выход"

Terminates execution of the script. Shutdown functions and object destructors will always be executed even if exit is called.

Это нормально для этого, он должен очистить память от всех переменных и функций, которые вы вызывали раньше. Не делать этого будет означать, что ваш memmory останется застрявшим и окупившимся в вашу оперативную память, и если это произойдет несколько раз, вам нужно будет перезагрузить и сбросить свою RAM, чтобы оставить все.

Ответ 6

или попробуйте

trigger_error('Die', E_ERROR);