0

私はこのコードを持っています:

for($i = $start; $i <= $end ; $i++)
    {
        $url = "http://xxx.co.il/yyy?zzz=$i";
        $ch = curl_init();
        curl_setopt ($ch, CURLOPT_URL, $url);
        curl_setopt ($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; he-IL; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6");
        curl_setopt ($ch, CURLOPT_REFERER, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
        $result = curl_exec($ch);
        $info = curl_getinfo($ch);
        curl_close($ch);

        if($info['url'] == "http://www.xxx.co.il/abc")
        {
                echo "<br />%^$i^%<br />";   
        }
        else
        {
                echo "$info['url']";
        }

cURL しようとしている URL は、常に別のページにリダイレクトされます。ただし、$info['url'] 静止画が元の URL である場合もあります。何故ですか?手動でスタックした $i を試すと、リダイレクトされます。

コードは以前は機能していましたが、私が認識しているものは何も変更していません。ほとんどの場合、それは機能します。ケース 1 (「if」) またはケース 2 (「else」) のいずれかです。なぜこれが起こっているのですか?オンラインで答えを見つけることができませんでした。問題をキーワードに入れる方法がよくわからなかったからかもしれません。

サーバーでこれを実行すると動作しますが、私のコンピューターには 100 mbps のインターネット接続があり、はるかに高速です。さらに、サーバーよりもコンピューターに負荷をかけたいと思っています。

ありがとう!

更新: 問題は停止したようです。すべてがスムーズに実行されます。なぜこれが起こるのかについての理論を聞いてみたい.

ありがとう!

4

1 に答える 1

0

一般的なループ リダイレクトの落とし穴は、クライアントが Cookie を管理する必要があることです。

次のオプションを追加してみてください。

curl_setopt($ch, CURLOPT_COOKIEFILE, "cookies.txt");
curl_setopt($ch, CURLOPT_COOKIEJAR, "cookies.txt");
于 2013-08-07T19:41:24.027 に答える