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

2024-03-08

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

最长执行时间为 30 秒 超过

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

命令本身是这样调用的 -

从命令行为:

root@server>php -q /path/to/file.php

这有效...

并通过 PHP 文件中的 cron 如下:

exec("php -q /path/to/file.php");

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

我应该指出,被调用的脚本调用了许多其他脚本,并且这些脚本之一出现了错误。查看我的日志,最大执行时间错误实际上也发生在 30 秒之前!因此,在调用后不到 30 秒,由 cron 脚本调用的脚本(似乎以 CLI 方式运行)将抛出最大执行错误。

为了检查脚本是否按我的预期运行(作为没有最大执行时间的 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 http://php.net/manual/en/function.set-time-limit.php

或查看此帖子:PHP 中的异步 shell 执行 https://stackoverflow.com/questions/222414/asynchronous-shell-exec-in-php

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Shell 命令适用于命令行,但不适用于 PHP exec 的相关文章

  • jQuery 不断 ping 以获得 Ajax 响应

    如何使用 jQuery 不断运行 PHP 脚本并每秒获取响应 并将鼠标上的少量数据发送到同一脚本 我真的需要添加一些随机扩展才能让这样一个简单的计时器工作吗 迭代是人类的 递归是神圣的 L 彼得 多伊奇 http www devtopics
  • AJAX - 上传文件 (HTML5) 和 PHP

    我感觉完全超出了我的深度 但我感觉很接近 我正在尝试使用 AJAX 上传文件 我找到了这个教程http blog new bamboo co uk 2010 7 30 html5 powered ajax file uploads http
  • 我无法访问 XAMPP phpMyAdmin;它说:错误 MySQL 说:文档无法连接:无效设置

    完整错误消息 Error MySQL said Documentation Cannot connect invalid settings Connection for controluser as defined in your conf
  • php 错误地将字符串中的 ¬ 转换为 Ø

    我需要在 PHP 中组成一个简单的字符串 它是要发布到另一个站点的数据字符串 问题是其中一个字段是 notify url 当我使用该字段时 PHP 将其前面的 和 not 部分表示逻辑运算符 AND NOT 并将其转换为 字符 string
  • PHP foreach 数组与 stdClass 对象

    我需要帮助尝试获取数组和 stdClass 对象内的值 仅供参考 我正在使用 foursquare API 我有这样的事情 fsq groups venues gt response gt groups echo pre print r f
  • 在 csv 中查找数值

    我需要检查特定的数字 ID 是否在给定的字符串或逗号分隔值中 myVal 20 字符串可以仅包含多个值中的一个值 以逗号分隔 str 20 str 20 33 5 str 220 33 5 4420 本来我想到用strpos 但是20可以在
  • 使用 PHPUnit 模拟对象是否有可能期望调用神奇的 __call() 方法?

    我在测试中有一个模拟对象 真实的对象 PageRepository 使用 call 实现了一个神奇的方法 因此如果您调用 pageRepository gt findOneByXXXX value of field XXXX 它将在数据库中
  • 奇怪的 500 内部服务器错误(firebug、php、display_errors、ajax)

    在一页上我正在进行多个 AJAX 调用 所有调用均成功返回响应 但最后一个调用 与其他 ajax 调用无关 返回 500 内部服务器错误作为响应代码 如 firebug 所示 但是 尽管存在错误代码 该 AJAX 调用仍会返回正确的内容 令
  • 服务容器的使用寿命是多少?

    我正在尝试了解 Symfony2 框架 来自 Java Spring 背景 我意识到 Symfony2 中的 Scope 与 Spring 中的 Scope 不同 此外 通过 Symfony3 范围已弃用 https stackoverfl
  • 如何从 PHP 访问表单的“名称”变量

    我正在尝试创建一个 BMI 计算器 这应该允许人们使用公制或英制测量单位 我意识到我可以使用隐藏标签来解决我的问题 但这之前曾困扰过我 所以我想我会问 我可以使用 POST variableName 查找提交的变量名字段值 但是 我不知道或
  • 使用 utf-8 文件名发送 MIME 编码的电子邮件附件

    你好亲爱的人们 我花了三天时间在网上搜索答案 但没有找到任何答案 我发现了很多 几乎 的案例 但没有一个正是我正在寻找的 我能够获取希伯来语的主题和正文消息 但无法获取希伯来语的附加文件名 顺便说一句 我对 PHPMailer 等第三方程序
  • 差异:查看页面源代码与在 Firebug 中查看

    当我查看页面的页面源时 例如 http my sa ucsb edu public curriculum coursesearch aspx http my sa ucsb edu public curriculum coursesearc
  • 有没有办法通过给出整数值 PHP 来获取月份名称

    您好 我正在使用 PHP 我想传递一个整数值 1 12 并获取相应的月份名称 PHP 中有没有办法做到这一点 或者我必须通过初始化月份名称数组来完成自己的操作 我想做 month name get month name 1 echo mon
  • Wordpress 编辑器中的“application/gas-events-abn”对象是什么?

    我正在使用 Wordpress 创建博客 我注意到当我多次保存帖子时 代码中会出现一个奇怪的元素 在帖子底部创建一个大的空白区域 代码如下所示 post content nbsp 每次我编辑帖子时 我都必须将其删除 Joomla 有时也会发
  • PHP 中的舍入

    a 0 1 0 7 10 int 0 1 0 7 10 PHP 返回 false 有人能给我解释一下 为什么会发生这种情况吗 第一个返回 8 第二个返回 7 引用PHP 浮点精度手册中的大红色警告 http de3 php net manu
  • 基于 ajax 的弹出窗口中的 Mathjax + CKEditor 4 + CKEditor

    我已经配置了 CKEditor 4 并且我的页面上有以下内容 我的页面中有一个 CKEditor 设置值的两个选项 这两个选项本身分别选项两个基于 ajax 的弹出窗口 这些基于 ajax 的弹出窗口包含 CKEditor 现在我有以下问题
  • 如何通过引用文档查询嵌入文档?

    我正在使用 Doctrine ODM 但在通过引用文档查询嵌入文档时遇到问题 考虑以下文件
  • 当我在 PHP 中将 print_r() 应用于数组时,为什么会得到“Resource id #4”? [复制]

    这个问题在这里已经有答案了 可能的重复 我如何从 PHP 中的 MySql 响应中 回显 资源 id 6 https stackoverflow com questions 4290108 how do i echo a resource
  • 字符串不等于其自身

    But why if i echo good else echo bad echos gt gt bad 您应该复制此片段 如果你手写的话 它会起作用 它让我疯狂 你太狡猾了 第二个 I 不是小写拉丁文小写 i 我把它转储了 hexdump
  • 以零开头的字符串/数字的正确格式?

    我正在尝试使用 PHP 创建一个包含电话号码列表的文件 它工作正常 但如果电话号码以零开头 则该数字将从 Excel 文件中删除 有谁知道如何正确设置格式以使其保持不变 Either Set the value explicitly as

随机推荐