Сервер на php не держит больше 20 активных игроков
Всех, приветствую!
Делаю iframe приложение под Вконтакт. Сервер на php.
Проблема в том, что сервер не держит больше 20 человек, активно отсылающих запросы. Как можно оптимизировать код? Или может быть, я где-то ошибся. Заранее всем отписавшимся спасибо.
Вот краткий код:
$sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
$b = socket_bind($sock, 0, NET_PORT);
$l = socket_listen($sock);
while(!$this->stop) {
$this->waitChange(); // изменим массив изменившихся сокетов
$this->checkConnect(); // проверим присоединившихся
$this->readMessages(); // читаем присланные данные
$this->checkDisconnect(); // проверяем отсоединившихся
}
function waitChange()
{
$this->changed = array_merge([$this->sock], $this->sockets);
socket_select($this->changed, $write = NULL, $except = NULL, 0);
}
function checkConnect()
{
if (!in_array($this->sock, $this->changed)) {
return;
}
$new_sock = socket_accept($this->sock);
$this->sockets[] = $new_sock;
unset($this->changed[0]);
}
function readMessages()
{
foreach ($this->changed as $key => $read_sock) {
$data = @socket_read($read_sock, 1024, PHP_NORMAL_READ);
if($data === false) continue;
$request = json_decode($data);
if($request === NULL) continue;
switch($request->method)
{
case "new_player":
{
/////// исполняется различный код
}
unset($this->changed[$key]);
}
}
Источник: Stack Overflow на русском