首頁 >後端開發 >PHP問題 >php介面逾時如何處理

php介面逾時如何處理

(*-*)浩
(*-*)浩原創
2019-09-25 11:15:363660瀏覽

通常我們存取HTTP方式很多,主要是:curl, socket, file_get_contents() 等方法。

如果碰到對方伺服器一直沒有回應的時候,我們就悲劇了,很容易把整個伺服器搞死,所以在訪問http的時候也需要考慮逾時的問題。

php介面逾時如何處理

[ CURL 存取HTTP]

#CURL 是我們常用的一種比較可靠的存取HTTP協定介面的lib庫,性能高,還有一些並發支援的功能等。 (推薦學習:PHP程式設計從入門到精通

還是讓我們使用cURL 擴充功能來處理超時控製吧

假如你想更精確的處理逾時,就使用cURL 擴展,它可以設定連接逾時和讀取逾時(CURLOPT_TIMEOUTCURLOPT_CONNECTTIMEOUT)。

假如希望控制 HTTP 介面必須在毫秒層級傳回,也可以使用 CURLOPT_TIMEOUT_MS and CURLOPT_CONNECTTIMEOUT_M 常數。

注意假如使用這兩個常數,必須設定curl_setopt($ch, CURLOPT_NOSIGNAL, 1);

##神奇的來了,cURL 擴充機制很特別,在指定的讀取時間取得到多少資料就回傳多少,然後呼叫也終止,程式並不會報錯

透過程式碼看一下:

function e_curl() {
    global $url;
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_NOSIGNAL, 1);
    curl_setopt($ch, CURLOPT_TIMEOUT, 3);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 1);
    $response = curl_exec($ch);
    if ($response === false) {
        $info = curl_getinfo($ch);
        if ($info['http_code'] === 0) {
        return false;
        }
    }
    return true;}e_curl();

以上是php介面逾時如何處理的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
上一篇:php接口是什麼下一篇:php接口是什麼