今天有人问到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,前者同样会超时。
------------正 文 已 结 束, 感 谢 您 的 阅 读 (折雨的天空)--------------------
转载请注明本文标题和链接:《php的fsockopen超时的问题》
发表评论