我有一个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 ++也会在程序中间停止。
对此有何见解?
答案 0 :(得分:0)
你不需要如此巨大的超时;当没有连接时,cUrl会尝试连接长达10000秒的代码。将它设置为更合理的东西 - 例如10,例如