Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在PHP中执行超时?_Php - Fatal编程技术网

如何在PHP中执行超时?

如何在PHP中执行超时?,php,Php,可能重复: 有没有办法在PHP中执行超时?类似于Javascript中的setTimeout()。 我想在5分钟后将数据插入数据库 编辑:也是。它会在5分钟后做另一件事。将执行一个函数。然后,这种方法不应该与数据库一起使用。挂起是不可取的phpsleep()函数就是一种方法。更多详情请参阅。在您的情况下,代码可能是: <? sleep(300); // Or 'sleep(5*60);' to make it more readable. echo 'Do something!';

可能重复:

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


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

php
sleep()
函数就是一种方法。更多详情请参阅。在您的情况下,代码可能是:

<?

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

?>

php
sleep()
函数就是一条出路。更多详情请参阅。在您的情况下,代码可能是:

<?

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

?>


您需要使用cron作业或任务调度器之类的工具,具体取决于您的主机位置。PHP不是事件驱动的。

您需要使用cron作业或任务调度器之类的工具,具体取决于您的宿主位置。PHP不是事件驱动的。

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

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

我不确定您为什么需要它,但您可以使用

sleep(300);
更多

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


我会将数据存储在一个临时文件中。然后使用每隔五分钟运行一个脚本,以检查是否存在数据文件。如果需要,请将文件插入数据库。

我不确定您为什么需要此文件,但您可以使用

sleep(300);
更多

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


我会将数据存储在一个临时文件中。然后使用每隔五分钟运行一个脚本,以检查是否存在数据文件。如果有,则获取文件并插入数据库。

如果数据库还没有
当前\u时间戳
字段,请添加一个。然后,立即插入行,但将
CURRENT\u TIMESTAMP
字段设置为
DATE\u ADD(现在(),间隔5分钟)


然后,在您拥有的任何代码
中,从该表中选择
ing,包括
WHERE ts如果数据库还没有
CURRENT\u TIMESTAMP
字段,则添加一个。然后,立即插入行,但将
CURRENT\u TIMESTAMP
字段设置为
DATE\u ADD(现在(),间隔5分钟)


然后,在您拥有的任何代码中
从该表中选择
ing,包括
其中ts,就像其他人所说的,没有“干净”的方法。最好使用托管环境提供的cron作业或类似调度器的实用程序我强烈建议您不要使用
sleep()

另一种选择是完全改变你的方法。为什么不立即将数据放入数据库,但在5分钟后赋予它不同的“含义”?

e、 g.发布带有时间戳的新行。阅读时,你会过滤掉5分钟前插入的所有行。

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

另一种选择是完全改变你的方法。为什么不立即将数据放入数据库,但在5分钟后赋予它不同的“含义”?


e、 g.发布带有时间戳的新行。阅读时,你会过滤掉5分钟前插入的所有行。

请发布downvoteI没有否决投票的原因,但我可能应该这样做,因为这个答案与问题无关。@Sandy,你推荐一个PHP新手创建一个JavaScript/PHP组合web服务来解决一个纯粹的PHP问题?@JakeGould:我试图帮助某人,但我不知道那个人是新手。请发布downvoteI没有投反对票的原因,但我可能应该这样做,因为这个答案与问题无关。@Sandy,你推荐一个PHP新手创建一个JavaScript/PHP组合web服务来解决一个纯粹的PHP问题?@JakeGould:我试图帮助某人,但我不知道那个家伙是新手。这似乎是对我最好的方法。5分钟后它会做其他事情。将执行一个函数。那么,这种方法不应该与数据库一起使用。@Kolink。你能给我举个例子吗?如何添加当前时间戳?如何将当前时间戳字段设置为添加日期(现在(),间隔5分钟)
?确定。我明白了。但是当你说:
WHERE ts>=NOW()
I时,我想你是对的。对不起,我弄糊涂了。这确实是
这似乎是对我最好的方法。5分钟后它会做另一件事。将执行一个函数。那么,这种方法不应该与数据库一起使用。@Kolink。你能给我举个例子吗?如何添加当前时间戳?如何将当前时间戳字段设置为添加日期(现在(),间隔5分钟)
?确定。我明白了。但是当你说:
WHERE ts>=NOW()
I时,我想你是对的。对不起,我弄糊涂了。它确实是睡眠(5000)?83.3333分钟?你说得对,今天很晚:DSleep将挂起脚本。这不仅是不雅的,而且是不可接受的。是的,我知道,他问我时我回答说,因此为什么要在下面提供一个更优雅的解决方案。@gd1如果不知道全部细节,你真的不能说一个解决方案是不雅的。正如最初的海报所说,他们只是想延迟脚本将数据插入数据库。谁知道是什么或为什么<代码>睡眠()?83.3333分钟?你说得对,今天很晚:DSleep将挂起脚本。这不仅是不雅的,而且是不可接受的。是的,我知道,他问我时我回答说,因此为什么要在下面提供更优雅的解决方案。@gd1你真的不能吗