【问题标题】:PHP run php file in background without time outPHP在后台运行php文件而不会超时
【发布时间】:2018-06-07 06:51:08
【问题描述】:

我有一个 PHP 文件,我正在尝试在后台运行一个文件。不幸的是,该文件似乎在一段时间后超时。

这是我尝试过的:

   ini_set('max_execution_time', 0);
    exec('php  process.php /dev/null &');

程序似乎在后台运行,但不幸的是几秒/分钟后超时。

我收到“错误 502”

【问题讨论】:

  • 我认为你需要写 ini_set('max_execution_time', 0); process.php 中的这一行
  • 我已经这样做了。它已经在那里了。谢谢。
  • 我只想指出,运行没有超时的 php 脚本是危险的。根据您的需要,您可以每隔一段时间运行一个调度程序,并且仍然保持超时。

标签: php


【解决方案1】:

用 exec 和 shell_exec 做一些实验我发现了一个完美的解决方案!我选择使用 shell_exec,这样我就可以记录每个发生(或不发生)的通知过程。 (shell_exec 以字符串形式返回,这比使用 exec 更容易,将输出分配给变量,然后打开要写入的文件。)

我正在使用以下行来调用电子邮件脚本:

shell_exec("/path/to/php /path/to/send_notifications.php '".$post_id."' 'alert' >> /path/to/alert_log/paging.log &");

注意命令末尾的 & 很重要(正如@netcoder 所指出的那样)。此 UNIX 命令在后台运行一个进程。

脚本路径后用单引号括起来的额外变量设置为我可以在脚本中调用的$_SERVER['argv'] 变量。

然后,电子邮件脚本使用 >> 输出到我的日志文件,并将输出如下内容:

[2011-01-07 11:01:26] Alert Notifications Sent for http://alerts.illinoisstate.edu/2049 (SCRIPT: 38.71 seconds)
[2011-01-07 11:01:34] CRITICAL ERROR: Alert Notifications NOT sent for http://alerts.illinoisstate.edu/2049 (SCRIPT: 23.12 seconds)

谢谢!

【讨论】:

    猜你喜欢
    • 2013-11-22
    • 1970-01-01
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-06
    相关资源
    最近更新 更多