Я использую curl и php, чтобы узнать информацию о данном URL (например, код состояния http, mimetype, местоположение перенаправления http, заголовок страницы и т. Д.).
$ch = curl_init($url);
$useragent="Mozilla/5.0 (X11; U; Linux x86_64; ga-GB) AppleWebKit/532.9 (KHTML, like Gecko) Chrome/5.0.307.11 Safari/532.9";
curl_setopt($ch,CURLOPT_HTTPHEADER,array (
"Accept: application/rdf+xml;q=0.9, application/json;q=0.6, application/xml;q=0.5, application/xhtml+xml;q=0.3, text/html;q=0.2, */*;q=0.1"
));
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_USERAGENT, $useragent);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$content=curl_exec($ch);
$chinfo = curl_getinfo($ch);
curl_close($ch);
Обычно это работает хорошо.Однако, если URL указывает на файл большего размера, я получаю фатальную ошибку:
Неустранимая ошибка : допустимый объем памяти 16777216 байт исчерпан (попытался выделить 14421576 байт)
Есть ли способ предотвратить это?Например, сказав, что curl должен отказаться, если файл слишком большой, или перехватив ошибку?
В качестве обходного пути я добавил
curl_setopt ($ ch, CURLOPT_TIMEOUT, 3);который предполагает, что любой файл, который загружается дольше 3 секунд, исчерпает разрешенную память, но это далеко не удовлетворительно.