1

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

有没有办法在 PHP 中做超时?类似于 Javascript 中的 setTimeout() 的东西。我想在 5 分钟后在数据库中插入数据。

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

4

6 回答 6

4

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

然后,在您从该表中获得的任何代码SELECT中,包括WHERE ts <= NOW()(您的字段ts名称在哪里)CURRENT_TIMESTAMP

我在我的一个 Cron 脚本中使用这种技术来模拟它不间断地运行,而实际上它每 15 分钟运行一次,使用 0 到 15 分钟之间的随机间隔,并且效果非常好。

于 2013-01-24T17:58:56.523 回答
1

您需要使用诸如 cron 作业或任务调度程序之类的东西,具体取决于您所在的位置。PHP 不是事件驱动的。

于 2013-01-24T17:56:46.587 回答
1

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

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

于 2013-01-24T17:59:45.637 回答
0

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

<?

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

?>
于 2013-01-24T17:56:34.673 回答
0

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

sleep(300);

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

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

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

于 2013-01-24T17:58:18.183 回答
-2

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

于 2013-01-24T17:57:32.797 回答