如何阻止PHP代码执行?

ily*_*oli 20 php

有没有办法立即停止PHP代码执行?

我知道退出,但它明确指出:

终止脚本的执行.即使调用exit,也将始终执行关闭函数和对象析构函数.

所以我想要实现的是在我调用exit或者其他什么时完全停止PHP代码的执行.

有帮助吗?

编辑:简森回答后

试验1:

function newExit() {
    __halt_compiler();
}    
echo "start";
newExit();    
echo "you should not see this";
Run Code Online (Sandbox Code Playgroud)

显示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";
Run Code Online (Sandbox Code Playgroud)

e.php只包含 __halt_compiler();

这表明startyou不应该看到这个

编辑:我为什么要这样做?

我正在开发一个应用程序,其中包含一个专有库(通过我无法访问的虚拟主机配置文件所需)作为加密代码.是一种用于安全目的的监控库.其中一个行为是它注册了一些记录实例状态的关闭函数(它将统计数据保存到数据库中)

我想要做的是根据(远程IP)禁用某些特定条件的日志记录

The*_*Rat 17

请参阅用户Pekka的以下信息

根据手册,即使脚本使用die()或终止脚本,也会执行析构函数exit():

即使使用停止脚本执行,也将调用析构函数exit().在析构函数中调用exit()将阻止执行剩余的关闭例程.
根据这个PHP:析构函数vs register_shutdown_function,当达到PHP的执行时间限制时,析构函数不会被执行(在Windows 2上的Apache 2,PHP 5.2上确认).

析构函数也并没有得到当脚本终止,因为内存的限制达到执行.(刚刚测试过)

析构函数确实在致命错误上执行(刚刚测试过)更新:OP无法确认这一点 - 似乎存在致命错误

它并没有得到关于解析错误执行(因为整个脚本不会被解释)

如果服务器进程崩溃或者PHP控件之外的其他异常发生,则肯定不会执行析构函数.

在这个问题中引用在 没有调用PHP中的析构函数时是否存在任何实例?


vin*_*rpe 8

有什么问题吗return

echo "you will see this";
return;    
echo "you will not see this";
Run Code Online (Sandbox Code Playgroud)


Jen*_*ohn 3

您可以使用__halt_compiler将停止编译器执行的函数

http://www.php.net/manual/en/function.halt-compiler.php