Why is my long polling code for a notification system not updating in real time? PHP MYSQL

Posted by tjones on Stack Overflow See other posts from Stack Overflow or by tjones
Published on 2012-03-20T03:28:19Z Indexed on 2012/03/20 5:29 UTC
Read the original article Hit count: 141

Filed under:
|
|

I am making a notification system similar to the red notification on facebook. It should update the number of messages sent to a user in real time. When the message MYSQL table is updated, it should instantly notify the user, but it does not. There does not seem to be an error inserting into MYSQL because on page refresh the notifications update just fine.

I am essentially using code from this video tutorial: http://www.screenr.com/SNH (which updates in realtime if a data.txt file is changed, but it is not written for MYSQL like I am trying to do)

Is there something wrong with the below code:

**Javascript**

<script type="text/javascript">
$(document).ready(function(){   

var timestamp = null;
function waitForMsg(){
$.ajax({
    type: "GET",
    url: "getData.php",
    data: "userid=" + userid,
    async: true,
    cache: false,
    success: function(data){
        var json = eval('(' + data + ')');
        if (json['msg'] != "") {

            $('.notification').fadeIn().html(json['msg']);
        }

        setTimeout('waitForMsg()',30000);
    },
    error: function(XMLHttpRequest, textStatus, errorThrown){
        setTimeout('waitForMsg()',30000);
    }
});
}

waitForMsg();
</script>
<body>
<div class="notification"></div>


**PHP***

<?php

if ($_SERVER['REQUEST_METHOD'] == 'GET' )
{

$userid = $_GET['userid'];
include("config.php");

$sql="SELECT MAX(time) FROM notification WHERE userid='$userid'";
$result = mysql_query($sql);
$row = mysql_fetch_assoc($result);
$currentmodif = $row['MAX(time)'];

$s="SELECT MAX(lasttimeread) FROM notificationsRead WHERE submittedby='$userid'";
$r = mysql_query($s);
$rows = mysql_fetch_assoc($r);
$lasttimeread = $rows['MAX(lasttimeread)'];


while ($currentmodif <= $lasttimeread) {
usleep(10000);
clearstatcache();
$currentmodif = $row['MAX(time)'];
}

$response = array();    

$response['msg']       = You have new messages;
echo json_encode($response);

}
?>

© Stack Overflow or respective owner

Related posts about php

Related posts about jQuery