今天有人问到file_get_contents在使用的时候出现failed to open stream: HTTP request failed!的错误,因为我平时都不怎么使用这个东西,但是我知道file_get_contents在获取远程文件的时候总是有那么一些力不从心,所以立马想到使用fsockopen专业点,但是也没怎么使用过这个函数,于是网上找到这么段代码:
$url = "roll.news.sina.com.cn";用来调试了半天,总是出现代码执行超时的问题,后来找了好久,终于找到有人遇到一个问题,原来是这段代码的\r\n的问题。
$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);