|
|
|
| Проблема собственно вот в чем... Поставил порт на прослушку на неблоикрующем сокете. Принятие соединения выполняется в бессконечном цикле. Если соединение установится, то транспортный сокет тоже устанавливается как неблокирующий. И опять в цикле (только уже определенное количество раз) выполняется чтение данных с сокета $sock.
Примерно так:
<?php
$sockets = array();
$recv_data = array();
$count = 0;
$main_sock = socket_create_listen(20000);
socket_set_nonblock($main_sock);
for (;;)
{
$sockets[$count] = socket_accept($main_sock);
if ($sockets[$count] > 0)
{
socket_set_nonblock($sockets[$count]);
...
$count++;
}
if ($count)
{
for ($i = 0; $i < $count; $i++)
{
$recv_data[$i] = socket_read($sockets[$i]);
if (счтитаны все данные) {
....
}
...
}
}
...
}
?>
|
Так вот, после того как считаются все данные, мне надо выполнять определенные действия. Но как поймать этот момент, если сокет не блокирует? Приминение неблокирующих сокетов обязательно, так что откзатся от них никак нельзя.
Зарание спасибо! | |
|
|