Написал скрипт для сканирования 5 хостов по определенному порту, но не знаю как его переделать для большого числа ip. Хотя кажется, что и этот вариант не очень правильный. Сам скрипт: PHP: // $hosts - массив с проверяемыми ip foreach ($hosts as $i => $host) { $sockets[$i] = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); socket_set_nonblock($sockets[$i]); @socket_connect($sockets[$i], $host, $port); } foreach ($sockets as $i => $socket) { $arrRead[] = $socket; // массив сокетов для чтения } $arrWrite = NULL; $num = socket_select($arrRead, $arrWrite, $arrExcept = NULL, 2); if ($num > 0) { if (count($arrRead) > 0) { foreach($arrRead as $i => $socket) { $do = true; while ($do == true) { $str = socket_read($socket, 1024); echo "$str<br>"; flush(); if ($str == "") { $do = false; socket_shutdown($socket); socket_close($socket); } } } } }
давненько искал ответ. тогда, решением было перезагрузка скрипта после n соединений было это дело под M$, мб *nix нет этой проблемы (а если и есть можно форкать процес и там сокет юзать - мертвый процесс мертвый сокет)