Maniero

Personal blog, mostly about software engineering.

PHP - Long Polling

Long Polling is a technique used when you need create a real time application, where the server will wait from a event occur to response the request.

On this example, we will create a webchat, using a simple text file. The server will read the text file, and will hold the conection until the file has new lines. To check it, the server will receive the current line number.

Go to the code

<?php
// Disable max runtime
set_time_limit(0);
function poll($cur_line){    
    // An infinite loop
    while(true){    
        // Read the file
        $data = file_get_contents('chat.txt');
        $lines = explode("\n", $data);

        if(count($lines) == $cur_line || empty($lines[0])){
            // Sleep for 1 seccond if no new line
            sleep(1); 
        }else{
            $ret = array();
            $ret['lines'] = array();
            // Put new lines in the vector
            for($cur_line; $cur_line < count($lines); $cur_line++){
                $ret['lines'][] = $lines[$cur_line];
            }
            // Update the cur_line to response
            $ret['cur_line'] = $cur_line;
            // Return an JSON
            return json_encode($ret);
        }
    }
}

// echo the result
echo poll($_POST['cur_line']);
?>

You can see the complete code here


Old Post

This is an old post migrated from my old blog. You can see the original content here[pt-br]

If you'd like to give any feedback on this article, email me at blog@maniero.me.
Category: PHP
Tags: PHP