有没有办法立即停止PHP代码执行?
我知道退出,但它明确指出:
终止脚本的执行.即使调用exit,也将始终执行关闭函数和对象析构函数.
所以我想要实现的是在我调用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)禁用某些特定条件的日志记录
请参阅用户Pekka的以下信息
根据手册,即使脚本使用die()
或终止脚本,也会执行析构函数exit()
:
即使使用停止脚本执行,也将调用析构函数exit()
.在析构函数中调用exit()将阻止执行剩余的关闭例程.
根据这个PHP:析构函数vs register_shutdown_function,当达到PHP的执行时间限制时,析构函数不会被执行(在Windows 2上的Apache 2,PHP 5.2上确认).
析构函数也并没有得到当脚本终止,因为内存的限制达到执行.(刚刚测试过)
析构函数确实在致命错误上执行(刚刚测试过)更新:OP无法确认这一点 - 似乎存在致命错误
它并没有得到关于解析错误执行(因为整个脚本不会被解释)
如果服务器进程崩溃或者PHP控件之外的其他异常发生,则肯定不会执行析构函数.
在这个问题中引用在 没有调用PHP中的析构函数时是否存在任何实例?