首页 > 解决方案 > 为什么我们的 PHP 脚本会停止解析 midscript?

问题描述

最近我们将服务器从 PHP 版本 5.6 更新到 PHP 7.4,因为这次升级我们遇到了一些脚本的一些非常奇怪的行为。

脚本本身完全适用于 PHP 7,没有错误日志,也没有任何错误日志,甚至在问题发生时也没有打印甚至记录。

发生的情况如下:

启动一个脚本,该脚本调用多个函数,当 1 个函数只需要很长时间才能完成然后主脚本停止时,没有错误或输出,因为表明某些事情是错误的或出错了。

无论我们是通过 GUI 还是通过 CLI 运行此脚本,两者的结果都是相同的。

每次调用函数(不管是什么函数)只需要很长时间才能完成时,脚本都会停止/中断(在 cli 上你又回到提示符下),如上所述,原因不是 php 代码错误,代码是有效的。

当使用 php 5.6 运行相同的脚本时,脚本会一直等待,直到被调用的函数完成,然后正常继续按预期进行。

看起来 PHP7 中的某处有一个(新)设置,它限制了被调用函数可能运行的执行时间,否则我无法解释这种行为,这里的问题是这到底是哪个设置以及如何更改它,显而易见的设置我们已经改变了。

有人知道在哪里寻找或搜索这些设置吗?

系统在 Centos 8 上运行,使用 PHP 7.4.13(或 php 5.6),当使用较旧的 PHP 版本(7.2)时问题是一样的,只有 php 5.6 根本没有这个问题。

标签: phpphp-5.6php-7.4directadmin

解决方案


错误报告已打开,不会记录任何错误。如果我们在 PHP 7.4 上运行脚本。脚本在短时间内(1 - 2 分钟)后从 CLI 停止。在 PHP 5.6 上运行相同的脚本时,它会运行很长时间(在这种情况下应该如此)。我们的开发人员发现调用另一个函数来检查电子邮件帐户是否存在(HELO 检查)的函数需要超过 2-3 秒,整个 PHP 脚本在 7.4 中停止,而 PHP 5.6 只是等待更长时间并运行整个脚本


推荐阅读