折雨的天空
php的fsockopen超时的问题
2011-10-11 我好笨

今天有人问到file_get_contents在使用的时候出现failed to open stream: HTTP request failed!的错误,因为我平时都不怎么使用这个东西,但是我知道file_get_contents在获取远程文件的时候总是有那么一些力不从心,所以立马想到使用fsockopen专业点,但是也没怎么使用过这个函数,于是网上找到这么段代码:



$url = "roll.news.sina.com.cn";  
$fp = fsockopen($url,80,$errno,$errstr,20);
if(!$fp){
echo "$errno : $errstr";
}else{

$out = "GET /news/gnxw/zs-pl/index_1.shtml HTTP/1.1/r/n";
$out .= "Host: roll.news.sina.com.cn/r/n";
$out .= "Connection: Close/r/n/r/n";
$out .= "Keep-Alive: 300/r/n";
$out .= "Connection: keep-alive/r/n";
fputs($fp, $out);

//获取fsockopen的全部内容赋值到$file
$file = '';
while(!feof($fp)) {
$file .= fgets($fp,128);
}
fclose($fp);
用来调试了半天,总是出现代码执行超时的问题,后来找了好久,终于找到有人遇到一个问题,原来是这段代码的\r\n的问题。



看上面代码是不是所有地方都是/r/n,这个/是反的。



别人的日志地址在:http://www.etang.info/php-it/fsockopen-timeout.html



同时还要注意,\r\n和\r\n\r\n,前者同样会超时。

发表评论:
昵称

邮件地址 (选填)

个人主页 (选填)

内容