gpt4 book ai didi

javascript - 如何查看mysql上是否有新数据

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

我需要编写一个应用程序,每 10 秒从外部服务器检查一次数据库,看看是否有新数据。目前我有一个 javascript,它通过比较两个 JSON(旧 JSON 和从服务器获取的新 JSON)来检查数据是否已更改服务器,以及它是否提醒用户。但这不是我在此应用程序中所需要的。仅当数据是新的而不是更改时才应提醒用户。

我在想,也许我可以使用查询 MYSQL 的 PHP 代码来执行此操作,如果查询 num_results 为 0,则循环直到 num_results 大于 0,当用户收到通知时。在此应用程序中,新数据是否在 0.1 秒或 10 秒内可供用户使用并不重要,只要用户获得它即可。这就是我尝试进行 MYSQL 检查的方式,但它不起作用:

<?php
include 'config.php';

if(isset($_GET['ID'])) {
$maxLoop = 20;
while($maxLoop--) {
$dbh = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
try {
$sth = $dbh->prepare('select * from testit where id = :id');
$sth->bindParam(':id',$_GET['ID'],PDO::PARAM_INT);
$sth->execute();
if($sth->rowCount()>0) {
$results = $sth->fetchAll(PDO::FETCH_OBJ);
echo '{"key":'. json_encode($results) .'}';
exit; // Found new data, end loop and script
}
} catch(PDOException $e) {
break;
}
sleep(3);
} // end while
} // end if

那么我怎样才能改变这段代码使其工作,或者我应该尝试编写一些可以执行此操作的 javascript?如果是这样,我如何检查数据是否是新的,而不是仅仅检查它是否已更改?

最佳答案

如何记录"new"数据?有时间戳吗?一个 auto_increment 主键字段?

最简单的轮询方法是简单地跟踪最后一个已知的 ID/时间戳,看看是否有任何具有更高 ID/更新时间戳的东西。

实际上,您的方法效率很低。您选择表中的所有记录,强制 mysql/pdo 开始从磁盘中获取该数据,等等......然后在获取行数后将其丢弃。一种更有效的方法是对 select count(*) ... 执行操作并检查该值。这使 mysql 不必开始从磁盘中获取实际的行数据。在某些表类型(尤其是 myisam)上,count(*) 操作非常快。

关于javascript - 如何查看mysql上是否有新数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10203050/

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