首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP cURL 獲取 HTTP 響應狀態碼完整指南

     編輯:PHP 綜合知識

核心方法:curl_getinfo()

執行 curl_exec() 後,使用 curl_getinfo($ch, CURLINFO_HTTP_CODE) 即可獲取 HTTP 響應狀態碼。

完整代碼示例

<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://www.example.com');
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_HEADER, false);      // 不在輸出中包含響應頭
curl_setopt($ch, CURLOPT_NOBODY, false);      // 包含響應體
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 返回字符串而非直接輸出
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); // 自動跟隨重定向
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 僅測試環境關閉 SSL 驗證

$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);

echo "HTTP 狀態碼: $httpCode\n";
echo "響應內容長度: " . strlen($response) . "\n";

curl_close($ch);
?>

常用 curl_getinfo 信息常量

常量說明
CURLINFO_HTTP_CODEHTTP 響應狀態碼(如 200, 301, 404, 500)
CURLINFO_TOTAL_TIME總耗時(秒)
CURLINFO_CONNECT_TIME建立連接耗時
CURLINFO_PRETRANSFER_TIME傳輸開始前耗時
CURLINFO_SIZE_DOWNLOAD下載字節數
CURLINFO_SPEED_DOWNLOAD平均下載速度(bytes/s)
CURLINFO_CONTENT_TYPE響應 Content-Type
CURLINFO_REDIRECT_COUNT重定向次數
CURLINFO_EFFECTIVE_URL最終有效 URL(跟隨重定向後)

關鍵 CURLOPT 選項速查

長整型選項

  • CURLOPT_TIMEOUT:最大執行時間(秒)
  • CURLOPT_CONNECTTIMEOUT:連接超時時間(秒)
  • CURLOPT_FOLLOWLOCATION:是否跟隨重定向
  • CURLOPT_MAXREDIRS:最大重定向次數
  • CURLOPT_SSL_VERIFYPEER:驗證 SSL 證書(生產環境必須為 1)
  • CURLOPT_SSL_VERIFYHOST:驗證 SSL 證書中的域名

字符串類型選項

  • CURLOPT_URL:請求地址
  • CURLOPT_USERAGENT:User-Agent 標識
  • CURLOPT_REFERER:Referer 頭
  • CURLOPT_COOKIE / CURLOPT_COOKIEFILE / CURLOPT_COOKIEJAR:Cookie 處理
  • CURLOPT_POSTFIELDS:POST 數據(數組自動編碼為 multipart/form-data)
  • CURLOPT_HTTPHEADER:自定義請求頭數組

進階技巧

  1. 僅獲取頭信息:設置 CURLOPT_NOBODY = true(發送 HEAD 請求),配合 CURLOPT_HEADER = true 獲取完整響應頭。
  2. 錯誤處理:檢查 curl_errno($ch) 獲取錯誤碼,curl_error($ch) 獲取錯誤信息。
  3. 並發請求:使用 curl_multi_* 系列函數實現並發。
  4. 保持連接:設置 CURLOPT_FORBID_REUSE = false(默認)復用連接,提升性能。

掌握 cURL 狀態碼獲取與常用選項,能讓你輕鬆應對 API 對接、網頁抓取、健康檢查等場景。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved