如何在 PHP 中超过 max_execution_time

How to exceed max_execution_time in PHP

在PHP中,我想运行一个需要2分钟计算的脚本,但我的max_execution_time只有30秒。
我无法在 php.ini 中更改我的 max_execution_time 也无法致电 shell_exec

我已经把我能想到的优化都做了。 有什么想法吗?

即使您无法更改 php.ini 文件本身,您也可以通过 PHP 代码 ini_set.

更改选项

您也可以尝试在您的代码中调用 set_time_limit,重置当前时间计数器(这在安全模式下不起作用)。

如果还是不行,尝试将任务拆分成多个子任务,并保存临时结果,这样就可以多次执行任务,从而绕过时间限制。

点赞

ini_set('max_execution_time', 100);

您拥有的 "best" 选项是将您的算法分成更小的部分。 每个部分应在 30 秒内执行以避免超时。 这里有一些想法。

使用 CURL:

  • [脚本开始] 调用 run.php 让我们计算 20 秒。
  • 将其统计信息保存到具有 ID
  • 的数据库中
  • 调用 CURL run.php?resumeID=384 [脚本完成]
  • [脚本开始]检索统计数据并继续计算
  • 等等...

使用 CRON 任务:

  • 每秒调用 run.php。它将在您的数据库中选择一个任务,然后标记为 "in progress"。 所以下次调用 run.php 时它不会选择 "in progress task"
  • 计算 20 秒后,将脚本的统计信息保存在数据库中并将 "in progress" 标志更改为 false。
  • 下一次调用 run.php 将选择任务并继续处理
  • 等等...

您也可以在 .htaccess 文件中设置它

将以下行添加到您的 .htaccess 文件

php_value max_execution_time 200