gpt4 book ai didi

php - Shell 命令适用于命令行,但不适用于 PHP exec

转载 作者:行者123 更新时间:2023-12-04 16:18:02 26 4
gpt4 key购买 nike

我有一个命令,当直接在命令行上运行时,它按预期工作。它运行超过 30 秒并且不会抛出任何错误。当通过 php 函数 exec()(包含在由 cron 调用的脚本中)通过 PHP 脚本调用相同的命令时,它会引发以下错误:

Maximum execution time of 30 seconds exceeded



我们有许多服务器,我已经在一个非常相似的服务器上运行了这个命令,该服务器具有完全相同的数据集,没有任何问题,所以我很高兴没有脚本级问题。我越来越倾向于认为这与服务器级别的某些内容有关 - 无论是在 PHP 设置中还是在服务器设置中以某种方式,但真的不确定在哪里查看。对于那些感兴趣的人,两台服务器的最大执行时间为 30 秒。

命令本身是这样调用的 -

从命令行为:
root@server>php -q /path/to/file.php

这有效...

并通过 PHP 文件中的 cron 为:
exec("php -q /path/to/file.php");

这会引发最大执行时间错误。我一直认为从命令行运行 PHP 时没有执行时间限制。

我应该指出,被调用的脚本调用了许多其他脚本,而这些脚本中的一个出错了。查看我的日志,最大执行时间错误实际上发生在 30 秒甚至过去之前!因此,在被调用后不到 30 秒,一个由似乎作为 CLI 运行的 cron 脚本调用的脚本引发了最大执行错误。

为了检查脚本是否按预期运行(作为没有最大执行时间的 CLI),我执行了以下检查:

包含此代码的 PHP 脚本:
// test.php
echo exec("php test2.php");

其中 test2.php 包含:
echo ini_get('max_execution_time');

这个脚本是这样运行的:
root@server> php test.php
// returns 0

这证明以这种方式调用的脚本在 CLI 下运行,最大执行时间为 0,这正好证明了我的想法,我真的不明白为什么这个脚本在最大执行时间上失败!

最佳答案

看来您的脚本执行时间太长,请尝试

设置时间限制,http://php.net/manual/en/function.set-time-limit.php

或查看此帖子:
Asynchronous shell exec in PHP

关于php - Shell 命令适用于命令行,但不适用于 PHP exec,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3460636/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com