php – Long Polling does not GET timestamp

Question:

I got this example from the blog http://rberaldo.com.br/server-push-long-polling-php-ios/

server.php

<?php
header('Content-type: application/json');
require 'pdo.php';
set_time_limit(0);
while ( true )
{
    $requestedTimestamp = isset( $_GET['timestamp'] ) ? (int)$_GET['timestamp'] : 0;

    $stmt = $pdo->prepare( "SELECT * FROM publication WHERE publication_time = :requestedTimestamp" );

    $stmt->bindParam( ':requestedTimestamp', $requestedTimestamp );
    $stmt->execute();



    if ($stmt->rowCount() > 0)
    {
    while ($rowpublication = $stmt->fetch(PDO::FETCH_ASSOC)) {
    $publication_id  = $rowpublication['publication_id'];
    }
        $json = json_encode( $publication_id );
        echo $json;
        break;
    }
    else
    {
        sleep( 2 );
        continue;
    }
}
?>

Client.js

function getContent( timestamp )
{
    var queryString = { 'timestamp' : timestamp };

    $.get ( '/php-long-polling-master/server/server.php' , queryString , function ( data )
    {
        var obj = jQuery.parseJSON( data );
        $( '#response' ).html( obj.content );

        // reconecta ao receber uma resposta do servidor
        getContent( obj.timestamp );
    });
}

$( document ).ready ( function ()
{
    getContent();
});

IT DOESN'T ISSET TIMESTAMP, WHERE IS THE PROBLEM?

Answer:

If you're trying to get the timestamp via the date response to $.getJSON , then why didn't you respond with the timestamp ?

The correct snippet of your code response should read:

 $json = json_encode(array(
     'content' => $publication_id, 
     'timestamp' => $requestedTimestamp
));

I don't know where the content comes from in your code (apparently you don't return any data by that name) so I set it to $publication_id .

Scroll to Top