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」

對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.
分類: Programming,標籤: , , , 。這篇內容的永久連結

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

  1. 自動引用通知: PHP curl 使用 | hoyo 學習紀錄

  2. Terry Lin表示:

    CURL 在 PHP 裡 timeout,怎麼告知遠端 API Server 結束這段 tcp handshake。好像沒機制做的到喔?

Terry Lin 發表迴響 取消回覆

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