我目前正在尝试配置CURL&在线发现的PHP函数在调用时检查HTTP响应头是否在200-300范围内以确定网页是否已启动。一旦使用下面的代码(不是函数本身,而是if语句等)对单个网站运行,这是成功的。该函数返回true或false,具体取决于HTTP Response标头的范围:
$page = "www.google.com";
$page = gzdecode($page);
if (Visit($page))
{
echo $page;
echo " Is OK <br>";
}
else
{
echo $page;
echo " Is DOWN <br>";
}
然而,当通过使用for for循环运行存储在脚本中的URL数组时,它会将列表中的每个网页报告为向下,尽管代码是相同的条,当然添加了for循环。
有谁知道这个问题可能是什么?
编辑 - 添加访问功能 我很抱歉,没有充分思考。 访问功能如下:
function Visit($url){
$agent = "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)";$ch=curl_init();
curl_setopt ($ch, CURLOPT_URL,$url );
curl_setopt($ch, CURLOPT_USERAGENT, $agent);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch,CURLOPT_VERBOSE,false);
curl_setopt($ch, CURLOPT_TIMEOUT, 5);
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch,CURLOPT_SSLVERSION,3);
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST, FALSE);
$page=curl_exec($ch);
//echo curl_error($ch);
$httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if($httpcode>=200 && $httpcode<310) return true;
else return false;
}
如上所述,foreach
循环如下所示:
foreach($Urls as $URL)
{
$page = $URL;
$page = gzdecode($page);
if (Visit($page))
访问部分的if
循环与之前相同。
答案 0 :(得分:0)
$page = $URL;
$page = gzdecode($page);
您为什么要尝试解压缩非压缩网址?假设您真的要解压缩从URL返回的内容,当您告诉客户端不支持压缩时,为什么远程服务器服务器会压缩它?为什么要抓取整个页面来查看标题?
您在此处向我们展示的代码从未起作过