【发布时间】: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