user1691388
user1691388

Reputation: 138

Implementing long-polling with jQuery and PHP

I want to build a chat, based on JavaScript (jQuery will be used for AJAX) and PHP.

I've heard a good way of doing this is to use long-polling.

I do understand the idea, but I don't know how to implement it on the server side.

An infinite loop sounds like a bad idea.

Upvotes: 4

Views: 2464

Answers (2)

Bhavesh G
Bhavesh G

Reputation: 3028

implementing such kind of chat is not good idea in php, you can use CometChat, Nodjs and if you can not install scripts on your server than you can use Available APIs for Realtime Sending Data,

such as Pubnub, Pushemr, Beaconpush.

Upvotes: 0

doublesharp
doublesharp

Reputation: 27599

You don't want to create an infinite loop, but you can set a timeout. Basically loop for X second waiting for some sort of data, and if that doesn't happen send a response to the client telling it that it needs to initiate a new request, which will have the same timeout period.

$source; // some data source - db, etc
$data = null; // our return data
$timeout = 30; // timeout in seconds
$now = time(); // start time

// loop for $timeout seconds from $now until we get $data
while((time() - $now) < $timeout) {
    // fetch $data
    $data = $source->getData();

    // if we got $data, break the loop
    if (!empty($data)) break;

    // wait 1 sec to check for new $data
    usleep(10000);
}

// if there is no $data, tell the client to re-request (arbitrary status message)
if (empty($data)) $data = array('status'=>'no-data');

// send $data response to client
echo json_encode($data);

Upvotes: 7

Related Questions