php - 查询指定时间?

标签 php mysql

有没有办法从 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/

相关文章:

php - 如何在 root 用户下从 PHP 运行 bash 脚本

php - 移动到新服务器后无法写入 MYSQL DB

mysql - 设计一个数据库来处理产品变化的库存跟踪

mysql - 错误 1067 : The process terminated unexpectedly [InnoDB]

简单连接到 MySQL 时 PHP 超时 - 在 win2k8 64 位 IIS 7/FastCGI php 上 - 新安装

php - xml 到 json 到 JavaScript

mysql - 如何在mysql脚本中获取这个结构

php - 使用桥连接表

PHP 运算符 <>

php - jQuery ajax 调用 php 给出 404 not found : what am I missing?