PHP中的cURL;不要总是遵循重定向


cURL in PHP doesn't always follow redirects

我有这个代码:

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")。你知道为什么会这样吗?我在网上找不到任何答案。也许是因为我真的不知道如何把这个问题放进关键词里。

当我在服务器上运行这个程序时,它可以工作,但我的电脑有一个100mbps的互联网连接,这让它更快。另外,我宁愿让我的电脑超载,也不愿让服务器超载。

谢谢!

更新:问题似乎已经停止。一切都很顺利。我仍然希望听到关于为什么会发生这种情况的理论。

谢谢!

一个常见的循环重定向陷阱是您的客户端需要管理cookie:

尝试添加以下选项:

curl_setopt($ch, CURLOPT_COOKIEFILE, "cookies.txt");
curl_setopt($ch, CURLOPT_COOKIEJAR, "cookies.txt");