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); ?>