function _my_GetFileContent_curl($iurl)
{
$vUrl=urldecode($iurl);
$ch = curl_init();
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_USERAGENT, 'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.5) Gecko/20041107 Firefox/1.0');
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_PROXY, 'proxy.net.site.ru:8080');
curl_setopt($ch, CURLOPT_PROXYUSERPWD, 'user:password');
$file_content=curl_exec($ch);
$Error=curl_error($ch);
curl_close($ch);
return $file_content;
}
CURL и странности с TIMEOUT
1. вообще не влияет установка параметра CURLOPT_TIMEOUT (остается 30 сек, хъотел меньше - никак)
2. Самое главное. Этот TIMEOUT отрабатывает как-то не на открытие одной страницы, а на открытие нескольких страниц суммарно.
Вот пример: если я дергаю _my_GetFileContent_curl много раз, то по истечении 30 секунд после обращения к первому URL выдается ошибка "Fatal error: Maximum execution time of 30 seconds exceeded".
Во-первых не ясно, почему 30, если я устанавливаю 10.
Во вторых не ясно, почему это число (30 сек) работает не как время открытия ОДНОЙ страницы, а фактически как СУММАРНОЕ время работы CURL по всем страницам.
Код:
Вот результат работы кода:
echo date("H:i:s");
_my_GetFileContent_curl("http://mysite.ru?param=1");
echo date("H:i:s");
_my_GetFileContent_curl("http://mysite.ru?param=1");
echo date("H:i:s");
_my_GetFileContent_curl("http://mysite.ru?param=1");
echo date("H:i:s");
_my_GetFileContent_curl("http://mysite.ru?param=1");
echo date("H:i:s");
_my_GetFileContent_curl("http://mysite.ru?param=1");
echo date("H:i:s");
_my_GetFileContent_curl("http://mysite.ru?param=1");
echo date("H:i:s");
11:34:38
11:34:43
11:34:47
11:34:51
11:34:57
11:35:05
Fatal error: Maximum execution time of 30 seconds exceeded
то есть как видно падает через 30 секунд после ПЕРВОГО обращения, что за бред!?!
Для CURla переустановил себе полностью PHP, а про max_execution_time в PHP.INI забыл, раньше он был большой, а после переустановки стал опять маленький.
Так что теперь ОК.
Помогите только все же разобраться почему timeout curla не удается сделать меньше
Вы хотите, чтобы вам страницы быстрее доставлялись? Так тут проблема не в курле. Расширьте себе интернет-канал или умудритесь как-нибудь увеличить время отклика сайта, к которому обращаетесь.