【发布时间】:2015-09-02 15:03:54
【问题描述】:
我需要创建一个循环在超过 20 秒时结束。 我已经尝试了以下代码,但它不工作,永远运行。
编辑: 对于简单的代码,它会停止正常,但使用 include_once 并包含外部文件即使在 20 秒过期后也会继续运行
bot.php
$starttime = time();
while (time() - $starttime < 20) {
include_once 'onefile.php';
include 'somefile.php';
include 'somefile2.php';
}
编辑 2:
对于 Josh Trii Johnston 的回答,如果未在 X 秒内结束,则该过程实际上已停止。现在的问题是我的案例还有另一个要求。上面提供的示例不能单独运行。它也包含在另一个循环文件中,如下所示:
master.php
<?php
while (1) {
include 'bot.php';
sleep(60);
}
如您所见,它在无限循环中运行,我想要的不是停止整个循环,而只是“中断”bot.php 循环,保持主 while(1) 循环处于活动状态。使用提供的解决方案,它会退出所有循环并终止进程。
【问题讨论】:
-
@Barmar 是的,你是绝对正确的
-
我刚试了你的代码,效果很好。
-
查看工作演示:ideone.com/AtZ6X3
-
那是你的问题。
include是同步的,如果你用while包裹它也没关系。到它到达下一次迭代时(在include完成之后),假设您的文件加载时间超过 20 秒,到那时它将满足 while 条件。 -
我会尝试@JoshTriiJohnston 的回答。
标签: php