如何阻止PHP代码执行?

 huo斌_340 发布于 2023-01-30 13:21

有没有办法立即停止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)禁用某些特定条件的日志记录

1 个回答
  • 请参阅用户Pekka的以下信息

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

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

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

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

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

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

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

    2023-01-30 13:24 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有