请教 file_get_contents 应用程序池回收 file_get_contents 获取远程网页(即本站)时第一次可以取的页面内容,以后就取不到了,但取别人网站的可以取的(http://www.163.com)后来回收一下 应用程序池 又可以取的一次后又不行了请问这是什么原因,是iis还是php 的哪个地方没有配置好?以前都没有遇到过 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 两次请求的间隔如果非常短,http服务器会自动辨别第2次请求为恶意访问,这样可以防止DOS、大流量访问攻击。lz看看是否为此原因。 楼主print_r($http_response_header)试试看,看看返回的服务器返回的header里面有没什么信息 function exists_remote_file($url_file) { //检测输入 $url_file = trim($url_file); if (empty($url_file)) { return false; } $url_arr = parse_url($url_file); if (!is_array($url_arr) || empty($url_arr)){ return false; } //获取请求数据 if(!isset($url_arr['host'])) return false; $host = $url_arr['host']; $path = $url_arr['path']; if(isset($url_arr['query'])) $path.="?".$url_arr['query']; $port = isset($url_arr['port']) ? $url_arr['port'] : "80"; //连接服务器 $fp = fsockopen($host, $port, $err_no, $err_str, 30); if (!$fp){ return false; } //构造请求协议 $request_str = "GET ".$path." HTTP/1.1\r\n"; $request_str .= "Host: ".$host."\r\n"; $request_str .= "Connection: Close\r\n\r\n"; //发送请求 fwrite($fp, $request_str); $first_header = fgets($fp, 102400); fclose($fp); //测试输出$first_header 的值 print_r($first_header); //判断文件是否存在 if (trim($first_header) == ""){ return false; } if (!preg_match("/200/", $first_header)){ return false; } return true; }用以上检测:当回收应用池以后显示的是:HTTP/1.1 200 OK 后来就显示:HTTP/1.1 302 Moved Temporarily 第一次说明连接上,第二次应该是连不上吧,但是回收一下又可以了?哎,以前都没遇到过这种问题,最近帮朋友搞了个网站,用他自己的服务器,不知道是服务器哪儿没配好? 不好意思,搞定了打开php.ini 文件 开启 include_path 配置 就行了这好像与浏览模式有关:直接访问与file_get_contents不是同一种方式谢谢这么多朋友关心 网站换了台服务器验证码显示不了,GD库开启了,在线求解决方案 能否将这个程序每行意思都解释下 CMS生成静态HTML文件,打开常导致IE死 php设置问题 SmartTemplate的问题 20分求一字符串处理函数。小弟弟我在线等的哦! 送分!高分求解正则问题! 很急的 关于字符窜的操作,100分。如果嫌不够,可另开贴 小弟就是想问问,能不能这样写php代码啊?true和flase用不来。 win下php5.5.12装不上memcache扩展 php 获取拼音首字母的函数,有点小问题。指点迷津。 有谁能帮我配IIS7+PHP5的环境
两次请求的间隔如果非常短,http服务器会自动辨别第2次请求为恶意访问,这样可以防止DOS、大流量访问攻击。
lz看看是否为此原因。
print_r($http_response_header)
试试看,看看返回的服务器返回的header里面有没什么信息
{
//检测输入
$url_file = trim($url_file);
if (empty($url_file)) { return false; }
$url_arr = parse_url($url_file);
if (!is_array($url_arr) || empty($url_arr)){ return false; } //获取请求数据
if(!isset($url_arr['host'])) return false;
$host = $url_arr['host'];
$path = $url_arr['path'];
if(isset($url_arr['query'])) $path.="?".$url_arr['query'];
$port = isset($url_arr['port']) ? $url_arr['port'] : "80";
//连接服务器
$fp = fsockopen($host, $port, $err_no, $err_str, 30);
if (!$fp){ return false; }
//构造请求协议
$request_str = "GET ".$path." HTTP/1.1\r\n";
$request_str .= "Host: ".$host."\r\n";
$request_str .= "Connection: Close\r\n\r\n"; //发送请求
fwrite($fp, $request_str);
$first_header = fgets($fp, 102400);
fclose($fp); //测试输出$first_header 的值
print_r($first_header); //判断文件是否存在
if (trim($first_header) == ""){ return false; }
if (!preg_match("/200/", $first_header)){
return false;
}
return true;
}用以上检测:当回收应用池以后显示的是:HTTP/1.1 200 OK
后来就显示:HTTP/1.1 302 Moved Temporarily 第一次说明连接上,第二次应该是连不上吧,但是回收一下又可以了?哎,以前都没遇到过这种问题,最近帮朋友搞了个网站,用他自己的服务器,不知道是服务器哪儿没配好?