php响应变慢(用mysql)

时间:2014-12-01 05:58:29

标签: javascript php mysql ajax mysqli

我正在开发一个仪表板,它也有通知,所以我计划用ajax,php,mysql.i进行实时通知。这使得它成为可能,但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'");


 ?>

以下是工作流程

  1. javascript在加载read_notification.php
  2. 时调用index.php
  3. read_notification.php使用while循环向数据库发出查询,而循环连续仍然是数据库在通知表上有任何一个条目
  4. 当数据库表有条目时,while循环失败并且响应返回index.php
  5. 这里没有问题是工作流程但是我在数据库上有记录之后有延迟(php不是从数据库突然读取,它在几秒钟之后工作),请说明理由或解决方案,谢谢

1 个答案:

答案 0 :(得分:0)

试试这个

$(document).ready(function() {
setInterval(function(){
//set up an ajax request every 2 sec
   comres.connect();
},2000);
});

在您的php中,只需显示基于某个标志变量的新通知。即如果用户点击通知,则将标志设置为1(不再显示),否则将其标记为零。