Сергей Тарасов
Профессор
Вопрос по сокетам
Всем добрый день!
Сложилась следующая проблема.
Последовательно вызываются функции
В итоге response_buff - пустая строка.
Никаких сообщений об ошибках не выдается.
При пошаговом выполнении программы в дебагере или при вставке строки sleep(2) между socket_write и socket_read - все нормально. Такое впечатление, что функция socket_read почему-то не блокируется и при выполнении программы без задержки буфер сокета пуст, а ожидания данных не происходит.
Для сокета установленв следующие параметры:
PHP 5.1/CGI Gentoo Linux
Может кто сталкивался с подобной проблемой?
-~{}~ 13.04.06 12:28:
У кого есть какие мысли?
-~{}~ 13.04.06 14:44:
Млин... Неужто никто не работал с сокетами???
Всем добрый день!
Сложилась следующая проблема.
Последовательно вызываются функции
PHP:
if (socket_write($sock, $request_body, strlen($request_body)) === FALSE )
{
...
}
$response_buff = "";
do
{
if ((($buf = socket_read($sock, 4096, PHP_BINARY_READ)) === FALSE))
{
break;
}
$response_buff .= $buf;
}
while (true);
Никаких сообщений об ошибках не выдается.
При пошаговом выполнении программы в дебагере или при вставке строки sleep(2) между socket_write и socket_read - все нормально. Такое впечатление, что функция socket_read почему-то не блокируется и при выполнении программы без задержки буфер сокета пуст, а ожидания данных не происходит.
Для сокета установленв следующие параметры:
PHP:
socket_set_option($sock, SOL_SOCKET, SO_SNDTIMEO, array("sec" => 0, "usec" => 1000));
socket_set_option($sock, SOL_SOCKET, SO_RCVTIMEO, array("sec" => 0, "usec" => 1000));
socket_set_block($sock);
Может кто сталкивался с подобной проблемой?
-~{}~ 13.04.06 12:28:
У кого есть какие мысли?
-~{}~ 13.04.06 14:44:
Млин... Неужто никто не работал с сокетами???