PHP 如何抓 CURL TIMEOUT 的狀態值

PHP CURL 若 TIMEOUT 掉, 就直接回傳空, 程式繼續往下跑, 但是要特別追蹤 Timeout 的狀況, 於是要於 Timeout 時, 紀錄當下的資料, 要如何偵測是 CURL Timeout 呢?

PHP 如何抓 CURL TIMEOUT 的狀態值

PHP 要抓 CURL Timeout 可以於 error message 取得, 詳見: PHP: curl_errno

由 CURL 的狀態清單: libcurl - Error Codes 可以得知, 28 是 Timeout 得回傳值.(下述摘錄自 CURL Error Codes)

CURLE_OPERATION_TIMEDOUT (28)

Operation timeout. The specified time-out period was reached according to the conditions.

範例

<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 1); // CURLOPT_TIMEOUT_MS
$response = curl_exec($ch);

if (curl_errno($ch) == 28) {
    // Log CURL Timeout message
}

curl_close($ch);
?>

相關網頁

作者: Tsung

對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.

在〈PHP 如何抓 CURL TIMEOUT 的狀態值〉中有 3 則留言

發表迴響

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料