Максимальное количество сокетов на порт ?

Tayson

Новичок
Максимальное количество сокетов на порт ?

Собственно все в сабже...


$sock = socket_create(AF_INET, SOCK_STREAM, 0) or die("Error");
socket_bind($sock, HOST, PORT) or die("Error");
socket_listen($sock, 50) or die("Error");
socket_set_nonblock($sock) or die("Error");

.....


if($msgsock = @socket_accept($sock)) {
echo "New znachenie \$msgsock: $msgsock "."\n";
socket_set_nonblock($msgsock);
$pool[] = & new phpServerThread($msgsock);
echo "New client is connected! Number of clients: ".count($pool)."\n";
}

Клиентов порядка 300
 

Tayson

Новичок
2
Вурдалак socket_listen($sock, 50) or die("Error");

Памяти около 70% свободно.
Соеденения всегда закрываю через socket_close

Переменная $msgsock - это как счетчик конектов клиентов, она за месяц доходит до 1000000.

проблема в том что хостпровайдер говорит что я открываю слишком много сокетов (около 1000) и из за этого весь сервер тормозит...
 

Вурдалак

Продвинутый новичок
Так ты $pool от отработавших объектов с закрытыми сокетами очищаешь?

-~{}~ 14.09.10 22:47:

Кстати, почему класс называется phpServerThread, когда он фактически обрабатывает клиентский запрос?
 

Tayson

Новичок
и пул и сами сокеты:

$pool[$key]->destroy();
unset($pool[$key]);
echo "Client is DIE! Number of clients: ".count($pool)."\n";

function destroy() {
@socket_close($this->socket);
}

:) ну наверное потому что скрипт и есть сервер...:)
 

Alexandre

PHPПенсионер
Переменная $msgsock - это как счетчик конектов клиентов, она за месяц доходит до 1000000.
так смысл считать кол-во коннектов за месяц. считай кол-во одновременно открытых соединений и скидывай в лог.
 
Сверху