[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: set_time_limit
te0203
Как установить set_time_limit только для одной функции?
function getCountryByIp($ipAddress){
set_time_limit(2);
try{
$ipDetail=array();
$f = file_get_contents("http://api.hostip.info/?ip=".$ipAddress);
//Получаем название города
preg_match("@<Hostip>(\s)*<gml:name>(.*?)</gml:name>@si", $f, $city);
$ipDetail['city'] = $city[2];
//Получаем название страны
preg_match("@<countryName>(.*?)</countryName>@si", $f, $country);
$ipDetail['country'] = $country[1];
//Получаем код страны
preg_match("@<countryAbbrev>(.*?)</countryAbbrev>@si", $f, $countryCode);
$ipDetail['countryCode'] = $countryCode[1];
return $ipDetail;
}
catch (Exception $e) {
$my->Log($e->getMessage().' / '.$e->getLine());
return false;
}
}


Так не работает....



Спустя 13 минут, 11 секунд (16.08.2011 - 15:54) linker написал(а):
Никак, set_time_limit() действует глобально для всего скрипта, если скрипт не успевает выполниться за это время, то php тупо его завершает с выдачей соответствующей ошибки.

Спустя 5 минут, 29 секунд (16.08.2011 - 16:00) te0203 написал(а):
А если всё завернуть в класс?
Или есть другие методы как обойти, если удалёный сервис не отвечает?

Спустя 4 минуты, 30 секунд (16.08.2011 - 16:04) kristall написал(а):
В CURLе можно задать timeout.

Спустя 7 минут, 49 секунд (16.08.2011 - 16:12) linker написал(а):
te0203
Это уже другой вопрос. При работе с сокетами на низком уровне или высоком (cURL) можно задавать время ожидания ответа от внешнего сервиса.

Спустя 56 минут, 25 секунд (16.08.2011 - 17:08) te0203 написал(а):
Тоесть ограничить во времени (cURL)
  	function Send($IP){
try{
$ch = curl_init();
curl_setopt($ch, CURLOPT_TIMEOUT, 2);//Добавляем ограничение времени
curl_setopt($ch, CURLOPT_URL, $this->host_otvet.$IP.'?'.$this->host);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLINFO_HEADER_OUT, false); // если этот параметр не указать не работает!
$cyntri = curl_exec($ch);
curl_close($ch);
return $cyntri;
}
catch (Exception $e) {
$my->Log($e->getMessage().' / '.$e->getLine());
return false;
}
}
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.