【发布时间】:2015-01-29 02:39:43
【问题描述】:
我正在开发一个仪表板,它也有一个通知,所以我计划使用 ajax、php、mysql 进行实时通知。我已经做到了,但是 mysqli(来自 php)读取速度很慢,无法从数据库,下面是我的代码
这是我在 index.php 上的 javascript 代码:
comres = {
connect: function() {
return $.ajax({
url: 'read_notification.php',
type: 'POST',
success: function(evt, request) {
alert(evt);
},
complete: function() {
comres.connect();
}
});
}
}
$(document).ready(function() {
comres.connect();
});
下面是我的 read_notification.php
<?php
require_once("db.php");
$query=mysqli_query($db,"select * from notifications");
while(mysqli_num_rows($query) < 1)
{
}
$query1 = mysqli_query($db,"select * from notifications");
$row = mysqli_fetch_array($query1);
$id=$row['id'];
$notification=$row['notification'];
echo "you have a notification ".$notification
mysqli_query($db,"delete from ticket.handover_response where id='$id'");
?>
下面是工作流程
- javascript 在加载
index.php时调用read_notification.php - read_notification.php 使用 while 循环触发对数据库的查询,while 循环连续仍然数据库在通知表上有任何一个条目
- 当数据库表有条目时,while 循环获取失败并返回到 index.php 的响应
这里没有问题是在工作流程中,但是在数据库记录后我有延迟(php不是突然从数据库中读取,它在几秒钟后工作),请提出原因或解决方案,谢谢
【问题讨论】:
-
学习代码格式以及 Stack Overflow markdown
-
你安装过像 xdebug 这样的调试器吗?
-
你为什么在
complete又打电话给comres.connect()?尝试摆脱它,看看它是否有效。 -
而不是在 php 中使用 while 循环,为什么不使用 jquery 计时器并发送 ajax 请求以不时获取通知。
-
如果我设置 ajax 获取通知的时间间隔,它会频繁发送请求,但在当前模式下,当前请求仍在等待响应到来,然后重新连接以获取下一个响应跨度>
标签: javascript php mysql ajax mysqli