WAS71
Новичок
Зависают сокеты
Добрый денек всем !!
никак не пойму в чем проблема, запускаю скрипт, который создает сокет на 5 подключений, при конекте на первый - все работает, запрос принимается и отсылается, если сделать еще одно(2-3-4) подключения - конектится, но ответа нет - помогает только полная остановка/запуск сервера (appache).
что не так делаю, вот исходник
Добрый денек всем !!
никак не пойму в чем проблема, запускаю скрипт, который создает сокет на 5 подключений, при конекте на первый - все работает, запрос принимается и отсылается, если сделать еще одно(2-3-4) подключения - конектится, но ответа нет - помогает только полная остановка/запуск сервера (appache).
что не так делаю, вот исходник
PHP:
#!/usr/local/bin/php -q
<?php
error_reporting (E_ALL);
/* Разрешить скрипту зависнуть в ожидании соединений. */
set_time_limit (0);
/* Включить неявную очистку вывода, и мы увидим всё получаемое
* по мере поступления. */
ob_implicit_flush ();
$address = 'localhost';
$port = 10000;
if (($sock = socket_create (AF_INET, SOCK_STREAM, 0)) < 0) {
echo "socket_create() failed: reason: " . socket_strerror ($sock) . "\n";
}
if (($ret = socket_bind ($sock, $address, $port)) < 0) {
echo "socket_bind() failed: reason: " . socket_strerror ($ret) . "\n";
}
if (($ret = socket_listen ($sock, 5)) < 0) {
echo "socket_listen() failed: reason: " . socket_strerror ($ret) . "\n";
}
do {
if (($msgsock = socket_accept($sock)) < 0) {
echo "socket_accept() failed: reason: " . socket_strerror ($msgsock) . "\n";
break;
}
do {
if (FALSE === ($buf = socket_read ($msgsock, 2048))) {
echo "socket_read() failed: reason: " . socket_strerror ($ret) . "\n";
break 2;
}
if (!$buf = trim ($buf)) {
continue;
}
if ($buf)
{
$msg = 'Rec_OK'.chr(13).chr(10); // обязательно 0А
socket_write($msgsock, $msg, strlen($msg));
continue;
}
} while (true);
socket_close ($msgsock);
} while (true);
socket_close ($sock);
?>