我有一個可以通過HTTP或HTTPS訪問的URL。我想發送HEAD或GET請求,這是最快的,並得到響應代碼,所以我知道URL是否啓動或關閉。使用Zend和Curl獲取HTTP響應代碼
我該如何使用Zend_HTTP_Client來做到這一點?我使用了get_headers()函數,但它在一些遠程服務器上非常慢。我不確定它是否處理HTTPS。
我有一個可以通過HTTP或HTTPS訪問的URL。我想發送HEAD或GET請求,這是最快的,並得到響應代碼,所以我知道URL是否啓動或關閉。使用Zend和Curl獲取HTTP響應代碼
我該如何使用Zend_HTTP_Client來做到這一點?我使用了get_headers()函數,但它在一些遠程服務器上非常慢。我不確定它是否處理HTTPS。
您可能不想使用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);
該代碼未經測試。使用風險自負。
儘管'HEAD'可能會更快,但使用GET可能會更好,因爲並非所有服務器都會接受'HEAD'請求。如果PHP對其本地流包裝具有'ssl'支持,'get_headers'將只能使用'https'。通常通過編譯PHP'--with-ssl'來實現。 – drew010 2012-03-03 20:54:03
@ drew010關於'HEAD'的好處,就是今天碰到的 - 如果我嘗試了'HEAD'(一個我真的只想知道文件是否存在的情況),就得到了'405'。 – 2012-03-03 21:03:15