function chkurl($url) {
$handle = curl_init($url);
curl_setopt($handle, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($handle, CURLOPT_CONNECTTIMEOUT, 10); // 連接超時 10 秒
curl_exec($handle);
$httpCode = curl_getinfo($handle, CURLINFO_HTTP_CODE);
curl_close($handle); // 必須在獲取資訊後關閉
return $httpCode !== 404;
}
// 使用示例
$url = "https://www.jb51.net/asdasd.html";
echo chkurl($url) ? "存在" : "不存在"; // 輸出:不存在
| 選項 | 作用 |
|---|---|
| CURLOPT_RETURNTRANSFER | 將響應體作為字符串返回而非直接輸出 |
| CURLOPT_CONNECTTIMEOUT | 設置連接階段超時秒數,防止長時間阻塞 |
| CURLINFO_HTTP_CODE | 獲取最後一次請求的 HTTP 狀態碼 |
CURLOPT_NOBODY => true 發送 HEAD 請求,節省帶寬與響應時間CURLOPT_FOLLOWLOCATION => true 自動處理 301/302 跳轉,獲取最終狀態碼CURLOPT_SSL_VERIFYPEER => true 並配置 CA 證書路徑curl_multi_* 系列函數實現並發請求完整對照表可參考:HTTP 狀態碼大全
cURL 配合 CURLINFO_HTTP_CODE 是 PHP 端判斷頁面可用性的標準方案。實際項目中建議封裝為服務類,統一異常處理、重試策略、日誌記錄,提升穩健性。