有没有办法从 PHP 脚本查询设定时间?
我想编写一个 PHP 脚本,它接受一个 id,然后查询 MySQL 数据库以查看是否有匹配项。如果其他用户可能尚未上传他们的匹配项,那么我的目标是查询,直到找到匹配项或直到 5 秒过去,然后我将返回 0。
在伪代码中,这就是我的想法,但这似乎不是一个好方法,因为我读过循环查询不是一个好的做法。
$id_in = 123;
time_c = time();
time_stop = time + 5; //seconds
while(time_c < time_stop){
time_c = time()
$result = mysql_query('SELECT * WHERE id=$id_in');
}
最佳答案
听起来您的要求是轮询某个表,直到出现具有特定 ID 的行。您需要这样的查询来执行此操作:
SELECT some-column, another column FROM some-table WHERE id=$id_in
(专业提示:不要在软件中使用 SELECT *
。)
看来你想轮询五秒钟然后放弃。那么让我们来解决这个问题。
一种选择是简单地sleep(5)
,然后使用您的查询轮询表。这样做的好处是非常简单。
另一个选择是你所拥有的。这将使你的 php 程序尽可能快地敲击 table ,一遍又一遍,直到投票成功或直到你的五秒用完。这种方法的优点是,当其他程序访问表时,您的 php 程序不会休眠。换句话说,它将以最小的延迟获取对表的更改。然而,这种选择有一个巨大的缺点。通过尽可能快地在 table 上敲击,您将占用 MySQL 服务器上的资源。这通常是浪费的。它将阻止您的应用程序有效地扩展(如果您有一万个用户都这样做怎么办?)具体来说,它可能会减慢尝试访问表的其他程序,因此它无法在五秒内完成更新。
但是,还有中间立场。尝试等待半秒
usleep(500000);
在每次轮询表之前。这样就不会那么严重地浪费 MySQL 资源。即使你的 php 程序在其他程序访问表时处于休眠状态,它也不会休眠太久。
关于php - 查询指定时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20929045/