2013-08-18 2 views
0

나는 내 데이터베이스에 하나의 테이블을 가지고 있습니다.
레코드가 새로운 경우 long pulling

Employee 
___________________________________ 
| Name  | City    |  
___________________________________ 
| Jack  | UK     | 
___________________________________ 
| John  | Kenya    | 
___________________________________ 

및이 테이블에서 값을 가져 오기 위해 select 쿼리를 사용하고 있습니다.
Employee의 선택 데이터를위한 내 sql.php 파일입니다.

<?php 
$con=mysqli_connect("localhost","root","","company"); 
// Check connection 
if (mysqli_connect_errno()) 
    { 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
    } 

$result = mysqli_query($con,"SELECT * FROM employee"); 

while($row = mysqli_fetch_array($result)) 
    { 
    echo $row['name'] . "&nbsp" . $row['city']; 
    } 

mysqli_close($con); 
?> 

지금 내가 이렇게 오래 끌어 시도하고 긴 당기는 간단한 코드입니다 : -

<html> 
<head> 
    <title>BargePoller</title> 
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js" type="text/javascript" charset="utf-8"></script> 

    <style type="text/css" media="screen"> 
     body{ background:#000;color:#fff;font-size:.9em; } 
     .msg{ background:#aaa;padding:.2em; border-bottom:1px #000 solid} 
     .old{ background-color:#246499;} 
     .new{ background-color:#3B9957;} 
    .error{ background-color:#992E36;} 
    </style> 

    <script type="text/javascript" charset="utf-8"> 
    function addmsg(type, msg){ 
     /* Simple helper to add a div. 
     type is the name of a CSS class (old/new/error). 
     msg is the contents of the div */ 
     $("#messages").append(
      "<div class='msg "+ type +"'>"+ msg +"</div>" 
     ); 
    } 

    function waitForMsg(){ 
     /* This requests the url "msgsrv.php" 
     When it complete (or errors)*/ 
     $.ajax({ 
      type: "GET", 
      url: "sql.php", 

      async: true, /* If set to non-async, browser shows page as "Loading.."*/ 
      cache: false, 
      timeout:1000, /* Timeout in ms */ 

      success: function(data){ /* called when request to barge.php completes */ 
       addmsg("new", data); /* Add response to a .msg div (with the "new" class)*/ 
       setTimeout(
        waitForMsg, /* Request next message */ 
        1000 /* ..after 1 seconds */ 
       ); 
      }, 
      error: function(XMLHttpRequest, textStatus, errorThrown){ 
       addmsg("error", textStatus + " (" + errorThrown + ")"); 
       setTimeout(
        waitForMsg, /* Try again after.. */ 
        1000); /* milliseconds (15seconds) */ 
      } 
     }); 
    }; 

    $(document).ready(function(){ 
     waitForMsg(); /* Start the inital request */ 
    }); 
    </script> 
</head> 
<body> 
    <div id="messages"> 
     <div class="msg old"> 
      BargePoll message requester! 
     </div> 
    </div> 
</body> 
</html> 

의 작업 완벽하고 아약스 호출 모든 초.
하지만 변경 사항이 테이블에 추가 된 경우 내 페이지의 div를 추가하는 것이 좋습니다.
어떻게해야합니까?
감사합니다.

+2

두 번째 "긴 폴링"은 어떻게 Ajax 요청입니까? 그것은 단지 "폴링"입니다. – nnnnnn

답변

1

폴링 간격을 1 초에서 15 초 정도로 늘리면됩니다.


실제 알림 시스템 - StackExchange-에 같은은 web socket 기반 솔루션을 필요로한다. 또한 웹 소켓 서버와 통신 할 수있는 트리거 함수로 등록 된 mysql의 일부 저장 프로 시저가 필요합니다.