Получить код ответа HTTP, используя Zend и Curl

У меня есть URL, который может быть доступен через HTTP или HTTPS. Я хочу отправить запрос HEAD или GET, который всегда самый быстрый, и получить код ответа, чтобы я знал, является ли URL-адрес активным или нет.

Как мне это сделать с помощью Zend_HTTP_Client? Я использовал функцию get_headers(), но на некоторых удаленных серверах она работает очень медленно. Я не уверен, что он обрабатывает HTTPS.

1 ответ

Решение

Вы можете не хотеть использовать Zend_Http_Client для этого - используйте вместо этого нативные функции PHP (например, fsockopen так как, кажется, вы хотите, чтобы это было эффективно).

Тем не менее, это может работать для вас (и, поскольку он по умолчанию использует адаптер сокета, он может быть не менее эффективным, чем использование встроенных функций):

$client = new Zend_Http_Client();
$response = $client->setUri($uri)->request(Zend_Http_Client::HEAD);

Если нет, вы можете попробовать установить параметры cURL вручную.

$adapter = new Zend_Http_Client_Adapter_Curl();
$adapter->setCurlOption(CURLOPT_NOBODY, true);

$client = new Zend_Http_Client();
$client->setAdapter($adapter);
$response = $client->setUri($uri)->request(Zend_Http_Client::HEAD);

Код не проверен. Используйте на свой риск.

Другие вопросы по тегам