socket_read的问题!!!!!请高人指点,最好能说一说原理,谢谢!
aiiiq 2005-10-15 09:04:57 socket_read的问题!!!!!请高人指点,最好能说一说原理,谢谢!
function f_socket($website,$url)
{
$service_port = getservbyname('www', 'tcp');
$address = gethostbyname($website);
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
$socket_result = socket_connect($socket, $address, $service_port) or die("SOCKET_CONNECT_ERROR: " . socket_strerror(socket_last_error($socket)));
$in = "GET " . $url . " HTTP/1.1\r\n";
$in .= "Host: " . $website . "\r\n";
$in .= "Connection: close\r\n\r\n";
socket_write($socket, $in, strlen($in));
$str = "";
do
{
if (false === ($out = socket_read($socket, 4096)))
{
$str = "";
break;
}
$str .= $out;
} while ($out != '');
/*
while ($out = socket_read($socket, 4096))
{
$str .= $out;
}
*/
socket_close($socket);
return $str;
}
通常是好用的,但有时读取页面会长时间没反应!
运行到socket_read就不再继续了,没有warring,也不die,浏览器还在工作,昏迷。。。
我希望30秒没响应就die掉,但是socket_set_timeout($socket,30);和stream_set_timeout($socket,30,0);不好用!
或者30秒没响应就break;跳过去,但是它没有warring,也不die,浏览器还在工作,我等了一个小时还是一样。。。
请高人指点,最好能说一说原理,谢谢!