繁体   English   中英

PHP的卷曲悬挂和无限循环

[英]php curl hanging and infinite loop

我一直在研究一个抓取工具,该工具会抓取Google搜索结果,然后抓取那些希望与特定项目匹配的结果网站。

我在使用cURL时遇到问题。 我遇到了一个导致卷曲进入无限循环的站点。

有问题的网站。 http://www.darellyelectrical.com/

当我打开数据包嗅探器并通过tcp http数据包ive查找时,发现相同的请求一遍又一遍地发送。

我无法查明原因,我在任何其他网站上都没有遇到麻烦。

我尝试设置以下卷曲选项

curl_setopt($ this-> sessions [$ key],CURLOPT_TIMEOUT,$ timeout);

curl_setopt($ this-> sessions [$ key],CURLOPT_MAXREDIRS,2);

curl_setopt($ this-> sessions [$ key],CURLOPT_CONNECTTIMEOUT,1);

如果有人可以使用curl测试该网址,并告诉我问题是否仍然存在,那就太好了。

谢谢

编辑* *

    function sck_send() 
{

    $host = "www.darellyelectrical.com";
    $path = "";

    $fp = fsockopen($host, 80, $errno, $errstr, 30);

    if (!$fp) {

        echo "$errstr ($errno)<br />\n";

    } else {



        $out = "GET /".$path." HTTP/1.1\r\n";
        $out .= "Host: ".$host."\r\n";
        $out .= "Connection: Close\r\n\r\n";

        $data = "";

        fwrite($fp, $out);

        while (!feof($fp)) 
        {
            $data .= fgets($fp, 128);
        }

        fclose($fp);

        echo $data;
    }

}

sck_send();

this will produce the loop same as curl.

该服务器需要包含User-Agent标头,否则它没有响应。 PHP的curl默认没有设置,除非您指定,否则它不会包含在套接字请求中。 以下代码对我有用:

<?php

function sck_send()  {
    $host = "www.darellyelectrical.com";
    $path = "";
    $fp = fsockopen($host, 80, $errno, $errstr, 30);
    if (!$fp) {
        echo "$errstr ($errno)<br />\n";
    } else {
        $out = "GET /".$path." HTTP/1.1\r\n";
        $out .= "Host: ".$host."\r\n";
        $out .= "User-Agent: Mozilla/5.0 \r\n";
        $out .= "Connection: Close\r\n\r\n";

        $data = "";
        fwrite($fp, $out);

        while (!feof($fp))  {
            $data .= fgets($fp, 128);
        }

        fclose($fp);
        echo $data;
    }
}
sck_send();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM