gpt4 book ai didi

php - 如何在 PHP 中进行异步 sleep 执行

转载 作者:行者123 更新时间:2023-11-29 18:36:36 25 4
gpt4 key购买 nike

这可以通过 cronjob 来完成,但由于我还没有转向具有相同计划的提供商,我想出了一个我认为可能实现我的目标的解决方法,即使不是一个实际的解决方法更好的解决方案。范围:这是一个消息系统,您希望在用户注销时让其他用户知道。对于用户决定在应用程序中注销的情况,这很容易完成,但例如,如果用户的 wifi 出现故障,显然该应用程序将无法告诉其他用户他不再在线。每 5 秒,应用程序就会检查一次新消息,同时还会使用每个用户的当前时间戳更新 mysql。所以我想,如果应用程序每5秒调用一次php脚本检查调用php脚本时sql表中的时间戳是否与10秒后相同,那么其他用户将被告知他已经离线了。这就是我在脚本末尾所做的:

$sql =$conn->prepare ("SELECT time FROM Users WHERE username = ? limit 1");
$sql->execute(array($usernametmp));
$oldtime = $sql->fetch(PDO::FETCH_COLUMN);
sleep(10);
$sql =$conn->prepare ("SELECT time FROM Users WHERE username = ? limit 1");
$sql->execute(array($usernametmp));
$newtime = $sql->fetch(PDO::FETCH_COLUMN);
if ($oldtime == $newtime)
{
(here´s where the other users are being informed
....

但遗憾的是整个 php 脚本中的所有代码直到 10 秒 sleep 后才执行。我想要的是执行 sleep 命令之前的所有代码,10 秒后,上面的代码被触发。有人知道我怎样才能实现这一目标吗?

最佳答案

好吧,我想出了一个不错的解决方法:

每次客户端检查新消息时,在 mysql 表中为此用户添加的新时间戳也会发送到客户端。时间戳立即从客户端发送到另一个 php 脚本,该脚本会休眠 10 秒,然后检查时间戳是否与 mysql 数据库中的时间戳相同。如果是这种情况,客户端的状态将更改为离线,因为在这 10 秒内,表中的时间戳应该已更新 - 除非客户端离线。

关于php - 如何在 PHP 中进行异步 sleep 执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45244385/

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