2014-11-13 2 views
1

Я прочитал несколько статей (например, this, или this), и все они дают мне то же самое, что и для использования Long Polling в PHP (с использованием usleep() и loop) например:Есть ли другой способ реализовать длинный опрос в PHP

$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); 

Есть ли другой способ? Я знаю, что PHP - это только скриптовый язык, но мне хотелось бы, чтобы он основывался на событии, а не проверял и выполнял или дождался таймаута. Это может быть что-то вроде Продолжение в Java, которое было бы идеальным.

ответ

1

Вы можете попробовать React: http://reactphp.org/

Разве это не очень зрелой, но она может удовлетворить ваши потребности. Вместо того, чтобы делать длинный пул, вы можете сделать это асинхронно.

+0

я буду читать его, может быть, это полезно – Deka

Смежные вопросы