php响应变得非常慢(使用mysql)

Posted

技术标签:

【中文标题】php响应变得非常慢(使用mysql)【英文标题】:php response getting very slow (with mysql) 【发布时间】:2015-01-29 02:39:43 【问题描述】:

我正在开发一个仪表板,它也有一个通知,所以我计划使用 ajax、phpmysql 进行实时通知。我已经做到了,但是 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 获取通知的时间间隔,它会频繁发送请求,但在当前模式下,当前请求仍在等待响应到来,然后重新连接以获取下一个响应跨度> 【参考方案1】:

试试这个

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

在您的 php 中,只需根据某个标志变量显示新通知。也就是说,如果用户单击通知,则将标志设置为 1(不再显示),否则将其标记为零。

【讨论】:

以上是关于php响应变得非常慢(使用mysql)的主要内容,如果未能解决你的问题,请参考以下文章

为啥使用VBA后,EXCEL响应变得很慢

php+mysql链接很慢,无响应

内存使用率高 - 应用程序响应慢:已用内存值未减少 + 可用内存值未增加

500000条记录后MySQL变得非常慢

PHP和Nginx突然在SSL上非常慢,但在HTTP上却很完美

Visual Studio 2005 网站管理工具的响应非常慢