在IP更改后,PHP中的cURL停止工作

时间:2013-12-24 05:49:55

标签: php curl libcurl

我有一个PHP脚本,可以通过cURL下载URL中的所有内容:

 <?php
 function get_curl_output($link)
{
    $channel = curl_init();
    curl_setopt($channel, CURLOPT_URL, $link);
    curl_setopt($channel, CURLOPT_HEADER, 0);
    curl_setopt($channel, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($channel, CURLOPT_CONNECTTIMEOUT, 10000);
    curl_setopt($channel, CURLOPT_TIMEOUT, 10000);
    curl_setopt($channel, CURLOPT_VERBOSE, true);
    curl_setopt($channel, CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; Windows; U; Windows NT 5.1; en-US; rv:1.8.1.2) Gecko/20070219');
    curl_setopt($channel, CURLOPT_FOLLOWLOCATION, true);
    $output = curl_exec($channel);
    if(curl_errno($channel))
    {
        file_put_contents('curlerror.txt', curl_error($channel) . PHP_EOL, FILE_APPEND);
    }
    curl_close($channel);
    return $output;
 ?>

 <?php
 function downloader($given_url){
     //download all the url's content in the $given_url.
     //if this $given_url is an array with 10 urls inside it, download all of their content. 
      while(as long as i find a url inside $given_url){
            $content_stored_here = get_curl_output($link);
            //and put that content to a file
      }
}
?>

现在一切顺利,直到没有连接丢失或IP更改。但是,我的连接在几个小时后随机获取一个新的IP地址,因为我没有静态IP地址。

我在使用WinNT MPM线程工作者的apache中使用mod_php。

获得新IP地址后,我的代码停止工作,但不会抛出错误

编辑:

我在c ++上制作了相同的程序(当然更改了一些函数名称并调整了编译器设置和链接器设置)一旦我获得新的IP地址或连接丢失,c ++也会在程序中间停止。

对此有何见解?

1 个答案:

答案 0 :(得分:0)

你不需要如此巨大的超时;当没有连接时,cUrl会尝试连接长达10000秒的代码。将它设置为更合理的东西 - 例如10,例如