【问题标题】:Why do our PHP scripts stop parsing midscript?为什么我们的 PHP 脚本会停止解析 midscript?
【发布时间】:2021-04-11 07:19:04
【问题描述】:

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

脚本本身完全适用于 PHP 7,没有错误日志或出现问题时打印甚至记录的内容。

接下来会发生什么:

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

不管我们是通过 GUI 还是通过 CLI 运行这个脚本,结果都是一样的。

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

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

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

有人知道在哪里查找或搜索此类设置吗?

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

【问题讨论】:

  • 您声明您从 CLI 运行此脚本,当从 CLI 运行脚本时 AFAIK max_execution_time 设置为 0,这意味着脚本不应停止执行,除非完成或明确取消,例如Ctrl+C,所以我不认为脚本超时,您是否启用了错误报告? stackoverflow.com/questions/845021/…
  • 检查错误报告已打开。查看日志以及终端输出
  • 当 1 个函数只需要很长时间才能完成时 除非您已经看到了要告诉您的内容,否则您怎么知道问题与执行时间有关
  • 增加或删除time limit
  • 检查系统日志以查看操作系统是否终止了进程(例如由于内存不足)。

标签: php php-5.6 php-7.4 directadmin


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2012-08-25
    • 2021-08-21
    • 2021-06-09
    • 1970-01-01
    • 2013-11-04
    • 1970-01-01
    • 1970-01-01
    • 2011-04-24
    • 2012-08-06
    相关资源
    最近更新 更多