jquery — длительный HTTP-запрос на активное ожидание потребляет процессор

У меня есть код jQuery, который отправляет длительный HTTP-запрос (XHR) в отношении модели Comet.

Таким образом, один игрок сигнализирует, что он ждет, когда его противник сделает ход. Когда противник выполняет действие (он ждет от нескольких секунд до 2 минут), pendingAction.txt создается файл с описанием хода противника.

Когда сервер получает запрос XHR от игрока, он запускает бесконечный цикл, ожидая хода противника:

while(1){
if(file_exists("pendingAction.txt")){
$file = fopen($fileName, "r");
$fileSize = filesize($fileName);
if($fileSize){ //if file's not empty
$commandsEncoded = fread($file, $fileSize);
fclose($file);
unlink($fileName);
break;
}
}else{
session_write_close(); //close the session prematurely to avoid sleep() and usleep() from locking other requests
sleep(5);
}
}

Я не могу продлить sleep(...) Параметр слишком большой, так как он влияет на время реакции (игрок может заметить «лаги»).

Но с таким сценарием я действительно потребляю много ресурсов процессора (у меня много активных игр на сервере).

Есть ли способ сделать это лучше? Может быть, некоторые пассивное ожидание метод вместо моего активного?

я бы хотел придерживаться PHP / JQuery и не задействовать дополнительные библиотеки или внешние скрипты если это возможно.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …