php - 为什么我们的 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 根本没有这个问题。
解决方案
错误报告已打开,不会记录任何错误。如果我们在 PHP 7.4 上运行脚本。脚本在短时间内(1 - 2 分钟)后从 CLI 停止。在 PHP 5.6 上运行相同的脚本时,它会运行很长时间(在这种情况下应该如此)。我们的开发人员发现调用另一个函数来检查电子邮件帐户是否存在(HELO 检查)的函数需要超过 2-3 秒,整个 PHP 脚本在 7.4 中停止,而 PHP 5.6 只是等待更长时间并运行整个脚本
推荐阅读
- c++ - MFC 丢失 Unicode 文本
- regex - 将 Perl 与 Regex 一起使用,如何删除字符串中的字符串?
- python - Discord 机器人命令突然停止工作
- javascript - 使用 for 循环对数组进行迭代真的有效吗?
- azureservicebus - 如何恢复 Azure 服务总线中意外删除的队列?
- pdf - 使用 fpdf 将 jpeg 图像插入 pdf 时的方向问题
- excel - 用户表单文本框中未填充总公式的百分比?
- swift - 如何复用函数并更新对应的数据模型实例?
- javascript - 扩展嵌套 typescript 接口
- performance - Rust 编译器会自动删除不必要的中间变量吗?