簡體   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