BoBka-altRUist
Новичок
неблокирующие сокеты (как их контролировать?)
запускается у меня несколько процессов использую настройку pcntl
запускаются они функцией pcntl_exec тут все нормально.
каждый из этих процессов открывает заданное количество сокетов примерно так:
все работает нормально, но время от времени бывают такие ситуации когда сокет открылся, потом (я так думаю)
"что-то случилось", например хост превысил лимит ожидания, размер страницы большой или еще что-то из-за чего сокет так и остается открытым. (процесс курсирует от 25-й и до 31-й строчки бесконечно)
как получить информацию о том что на нем происходит и на каком этапе это лучше делать?
запускается у меня несколько процессов использую настройку pcntl
запускаются они функцией pcntl_exec тут все нормально.
каждый из этих процессов открывает заданное количество сокетов примерно так:
PHP:
01 $done = false;
02 while (!$done) {
03
04 if ($max_sockets > count($sockets)) {
05 $socket = fsockopen($host, $port, $errno, $error, 30);
06 if (!$socket) {
07 //blablabla
08 } else {
09 stream_set_blocking($socket, 0);
10 stream_set_timeout($socket, 3600);
11 fputs($socket, $query);
12
13 $uid = md5(time());
14 $sockets[$uid] = $socket;
15 }
16 }
17
18 reset($sockets);
19
20 while ($socket = current($sockets)) {
21 if (feof($socket)) {
22 fclose($socket);
23 unset($sockets[key($sockets)]);
24 } else {
25 $temp = fgets($socket, 1000);
26 next($sockets);
27 }
28 }
29 //sleep(1);
30
31 if (count($sockets) == 0)
32 $done = true;
33 }
"что-то случилось", например хост превысил лимит ожидания, размер страницы большой или еще что-то из-за чего сокет так и остается открытым. (процесс курсирует от 25-й и до 31-й строчки бесконечно)
как получить информацию о том что на нем происходит и на каком этапе это лучше делать?

