Javascript 如果在数据库中插入新行,如何向用户发出警报

Javascript 如果在数据库中插入新行,如何向用户发出警报,javascript,php,mysql,ajax,xmlhttprequest,Javascript,Php,Mysql,Ajax,Xmlhttprequest,我有一个桌面应用程序在mysql表中插入值,其中包含字段id、关键字和时间戳 我有一个php页面,它在我的浏览器中保持打开状态,并列出该数据库中的所有条目 我想做的是让这个页面自动检查数据库中是否有新条目并警告我。这个警告一定是声音 如果时间戳小于当前时间戳的60秒,则认为一个条目是新的。< /P> 所以,我有一个mysql查询,它会检查新条目,但我的主要问题是,如何在不手动刷新页面的情况下每1秒执行一次查询?当发现新条目时,如何播放声音警报 提前感谢。尝试使用带有setTimeout的ajax

我有一个桌面应用程序在mysql表中插入值,其中包含字段
id
关键字
时间戳

我有一个php页面,它在我的浏览器中保持打开状态,并列出该数据库中的所有条目

我想做的是让这个页面自动检查数据库中是否有新条目并警告我。这个警告一定是声音

如果时间戳小于当前时间戳的60秒,则认为一个条目是新的。< /P> 所以,我有一个mysql查询,它会检查新条目,但我的主要问题是,如何在不手动刷新页面的情况下每1秒执行一次查询?当发现新条目时,如何播放声音警报


提前感谢。

尝试使用带有setTimeout的ajax get函数不确定地运行:

function checkDB()
{
    $.get("checkDB.php","",function(data) {
        if(data=="1") //if new entry is present
        {
            //use sound manager to play a sound file
        }
    });
    setTimeout("checkDB()",1000); // this will ensure this function to run every 1000 milliseconds
}

您可能需要查看WebSocket或长轮询。这是一篇很好的文章,详细介绍了你的选择。是一篇可能有助于进行长时间轮询的帖子。

U可以使用ajax实现此连接,并在保持连接打开时加快持久连接的速度。

我就是这样做到的:


在页面的
节点中,包含以下代码:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>

<script type="text/javascript">// <![CDATA[
$(document).ready(function() {
$.ajaxSetup({ cache: false }); // This part addresses an IE bug. without it, IE will only load the first number and will never refresh
setInterval(function() {
$('#divToRefresh').load('dbcheck.php');
}, 500); // refers to the time to refresh the div. it is in milliseconds.
});
// ]]></script>

// 

然后,在页面的某个地方:

<div id="divToRefresh">Running...</div>
正在运行。。。

当然,我创建了一个名为dbcheck.php的新php文件,其中包含连接到数据库的内容,并包含以下内容:

$sql3 = "SELECT keyword, timestamp FROM keywords ORDER BY id DESC LIMIT 1;";
$query3 = $pdo->prepare($sql3);
$query3->execute();
$result3 = $query3->fetch();

$timestampCheck = time() - 120;
if ($result3['timestamp'] >= $timestampCheck)
{
echo "<div>NEW KEYWORD FOUND!</div>\n\n";
echo "<div>", $result3['keyword'], "</div>";

echo "<audio autoplay=\"autoplay\">
<source src=\"alarm.wav\" type=\"audio/wav\">
Your browser does not support the audio element.
</audio>";

}
else
{
echo "Listening...";
}
$sql3=“从关键字中选择关键字,按id排序的时间戳描述限制1;”;
$query3=$pdo->prepare($sql3);
$query3->execute();
$result3=$query3->fetch();
$timestampCheck=time()-120;
如果($result3['timestamp']>=$timestampCheck)
{
echo“找到新关键字!\n\n”;
回显“$result3[“关键字”],”;
回声“
您的浏览器不支持音频元素。
";
}
其他的
{
回声“倾听…”;
}
我得到“调用未定义函数setTimeout()”。