如何在 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
在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