sitecreator
Новичок
socket_write с неблокирующими сокетами
Не совсем пойму как работает socket_write с неблокирующими сокетами.
По идее этот оператор передает управление следующему оператору сразу же, не дожидаясь окончания операции записи в сокет.
Тогда, что в таком случае содержит переменная $wr (количество записанных байт)? За какой период записанных?
Правильно ли я понимаю, что далее стоит использовать фунцию socket_select для определения сокетов, готовых для чтения? Т. е. если сокет готов для чтения, то можно считать, что socket_write выполнилась успешно, конечно, если сокет не перечислен в массиве ошибок ($except)?
PHP:
$s1 = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
$s2 = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_set_nonblock($s1);
socket_set_nonblock($s2);
@socket_connect($s1, "localhost", 80);
@socket_connect($s2, "localhost", 80);
$w = array($s1,$s2);
$n = socket_select($r=NULL, &$w, $f=NULL, 2);
if ($n !=0) // если есть готовые для записи сокеты
{
foreach ($w as $key => $s)
{
$wr = socket_write($s, "GET /test.php HTTP/1.0\n\n");
}
}
По идее этот оператор передает управление следующему оператору сразу же, не дожидаясь окончания операции записи в сокет.
Тогда, что в таком случае содержит переменная $wr (количество записанных байт)? За какой период записанных?
Правильно ли я понимаю, что далее стоит использовать фунцию socket_select для определения сокетов, готовых для чтения? Т. е. если сокет готов для чтения, то можно считать, что socket_write выполнилась успешно, конечно, если сокет не перечислен в массиве ошибок ($except)?