gpt4 book ai didi

php - 如何运行长循环需要超过允许的最大执行时间

转载 作者:行者123 更新时间:2023-12-05 07:19:11 24 4
gpt4 key购买 nike

我有一个 foreach 循环,但它需要很长时间才能到达终点,而且这个时间超过了我的共享主机服务器允许的最大执行时间 max_execution_time .

我也不能改变 max_execution_time 值因为我知道这样的解决方案

set_time_limit(0); // if `safe_mode` is off
// or
ini_set('max_execution_time', '300'); //300 seconds

所有都不起作用,我不允许这样做。

所以我想知道是否有类似 sleep 的方法,或者在 sleep 一段时间后停止循环,然后继续!有任何想法。

$arr = range(0, 50000000);

foreach ($arr as $number){

// do something using $number

}

最佳答案

我知道您不能更改 ini_set,但是,您有一个用于 Web 请求的 pnp.ini 和一个用于命令行内容的 pnp.ini。因此,如果您更改命令行设置,不会影响 Web 请求的最大执行时间。

当您说 ini_set 不工作时,我想您没有意识到这不是具体的问题,所以我必须假设在您的情况下不工作意味着什么。我认为这意味着即使您设置更大的限制,循环仍然会超时。但是,如果你运行

ini_set('max_execution_time', 0);

然后脚本将运行到结束。如果它是由操作系统发出的,例如作为 cron 作业而不是来自 Web 请求,那么即使您运行 ini_set,Web 请求的执行时间上限也将保持不变。

尽管这对于一个解决方案来说应该足够了,但值得一提的是,如果由于某些奇怪的原因你不允许调用 ini_set 甚至对于 cli php.ini,那么你将不得不发送在同一页面超时之前的请求,传递您的索引,因此下一个请求将知道从哪里继续。不要将它分成几个文件,这是一种反模式。

无论您选择哪种解决方案,请尝试优化您的代码。如果代码没有浪费时间,执行时间可能不会有任何问题。

关于php - 如何运行长循环需要超过允许的最大执行时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57909583/

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