如何在 PHP 中执行超时


How can I do a timeout in PHP?

可能的重复项:
对于PHP,是否有类似于setTimeout()(JavaScript)的函数?

有什么方法可以在 PHP 中超时吗?类似于 Javascript 中的 setTimeout() 的东西。我想在 5 分钟后将数据插入数据库。

编辑:也。它将在 5 分钟后做另一件事。将执行一个函数。然后,该方法不应与数据库一起使用。挂起是不可取的

如果数据库还没有CURRENT_TIMESTAMP字段,请添加一个。然后,立即插入该行,但将该CURRENT_TIMESTAMP字段设置为 DATE_ADD(NOW(),INTERVAL 5 MINUTE)

然后,在从此表中SELECT的任何代码中,包括WHERE ts <= NOW()(其中tsCURRENT_TIMESTAMP字段的名称)

我在我的一个 Cron 脚本中使用这种技术来模拟它不间断运行,而实际上它每 15 分钟运行一次,通过使用 0 到 15 分钟之间的随机间隔,它工作得很好。

您需要使用 cron 作业或任务计划程序之类的东西,具体取决于您的托管位置。PHP 不是事件驱动的。

就像其他人说的,没有"干净"的方法。您最好使用托管您的环境提供的 cron 作业或类似调度程序的实用程序。我强烈建议您不要使用sleep().

另一种选择是完全改变你的方法。为什么不立即将数据放入数据库,而是在 5 分钟后赋予它不同的"含义"?
例如,您发布带有时间戳的新行。阅读时,会筛选出 5 分钟前插入的所有行。

php sleep()函数是要走的路。 此线程中的更多详细信息。在您的情况下,代码可能是:

<?
sleep(300); // Or 'sleep(5*60);' to make it more readable.
echo 'Do something!';
?>

我不确定为什么你需要这个,但你可以使用

sleep(300);

更多 http://php.net/manual/en/function.sleep.php

但我会使用更优雅的解决方案,这同样取决于您能做什么或不能做什么。

我会将数据存储在一个临时文件中。然后使用 cron 每五分钟运行一次脚本来检查天气是否存在数据文件。如果是这样,请获取文件并插入到数据库中。

您可以使用 AJAX 通过 javascript setTimeout 保存数据。