2014-12-01 3 views
1

Я разрабатываю панель инструментов, это также уведомления, поэтому я планировал для живых уведомлений с помощью ajax, php, mysql.i've сделал это возможным, но mysqli (от PHP) читает медленно для извлечения результатов из базы данных, ниже мой кодphp-ответ получается очень медленным (с mysql)

это мой Javascript код на index.php:

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, когда загружает index.php
  2. read_notification.php сгореть запрос к базе данных с в то время как цикл, в то время как цикл непрерывного еще базы данных имеют какую-то одну запись на таблицу уведомлений
  3. если таблица базы данных имеют запись в цикле while не работает, и ответ возвращается к index.php

здесь нет проблем в рабочем потоке, но у меня есть задержка после записи в базе данных (php не читает внезапно из базы данных , он работает afte г несколько секунд), пожалуйста, предложить для этого причины или решения, благодаря

+0

узнать форматирование кода, а также уценку переполнения стека – Raptor

+0

у вас установлен какой-либо отладчик, такой как xdebug? –

+0

Почему вы снова вызываете 'comres.connect()' в 'complete'? Попытайтесь избавиться от этого и посмотрите, работает ли это. –

ответ

0

Попробуйте

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

В РНР просто отображает новое уведомление на основе некоторого флага variable.that, если пользователь нажимает набор уведомлений флаг в один (не показывать снова), иначе отметьте его как ноль.

Смежные вопросы