搜尋
首頁後端開發PHP問題php請求介面逾時如何解決

php請求介面逾時如何解決

Sep 29, 2019 pm 05:48 PM
php介面超時

php請求介面逾時如何解決

【HTTP存取】

一般我們造訪HTTP方式很多,主要是:curl, socket, file_get_contents() 等方法。

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

[ CURL 存取HTTP]

CURL 是我們常用的一種比較可靠的存取HTTP協定介面的lib庫,效能高,還有一些同時支援的功能等。

CURL:

curl_setopt($ch, opt) 可以設定一些逾時的設置,主要包括:

#CURLOPT_TIMEOUT設定cURL允許執行的最長秒數。

CURLOPT_TIMEOUT_MS 設定cURL允許執行的最長毫秒數。 ( 在cURL 7.16.2中被加入。從PHP 5.2.3起可使用。)

CURLOPT_CONNECTTIMEOUT 在發起連接前等待的時間,如果設定為0,則無限等待。

CURLOPT_CONNECTTIMEOUT_MS 嘗試連線等待的時間,以毫秒為單位。如果設定為0,則無限等待。  在cURL 7.16.2中被加入。從PHP 5.2.3開始可用。

CURLOPT_DNS_CACHE_TIMEOUT 設定在記憶體中保存DNS資訊的時間,預設為120秒。

curl普通秒級超時:

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL,$url);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($ch, CURLOPT_TIMEOUT, 60);   //只需要設定一個秒的數量就可以

curl_setopt($ ch, CURLOPT_HTTPHEADER, $headers);

curl_setopt($ch, CURLOPT_USERAGENT, $defined_vars['HTTP_USER_AGENT']);

curl級逾時使用:

curl_setopt($ch, CURLOPT_TIMEOUT, 60);

curl如果需要毫秒超時,需要增加:

curl_easy_setopt(curl, CURLOPT_NOSAL,

##curl_easy_setopt(curl, CURLOPT_NOSAL, 1L );

或是:

curl_setopt ( $ch,  CURLOPT_NOSIGNAL, true); 是可以支援毫秒等級逾時設定的

# curl一個毫秒超時的範例:

<?php
if (!isset($_GET[&#39;foo&#39;])) {
    
// Client
    $ch = curl_init(&#39;http://example.com/&#39;);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_NOSIGNAL, 1);  
//注意,毫秒超时一定要设置这个
    curl_setopt($ch, CURLOPT_TIMEOUT_MS, 200); 
//超时毫秒,cURL 7.16.2中被加入。从PHP 5.2.3起可使用
    $data = curl_exec($ch);
    $curl_errno = curl_errno($ch);
    $curl_error = curl_error($ch);
    curl_close($ch);
 
    if ($curl_errno > 0) {
        echo "cURL Error ($curl_errno): $curl_error\n";
    } else {
        echo "Data received: $data\n";
    }
} else {
    
// Server
    sleep(10);
    echo "Done.";
}
?>
其他一些技巧:

1. 依照經驗總結是:cURL 版本>= libcurl/7.21. 0 版本,毫秒超時是一定生效的,切記。

2. curl_multi的毫秒超時也有問題。 。單次存取是支援ms級逾時的,curl_multi並行調多個會不准

[流處理方式存取HTTP]

除了curl,我們還經常自己使用fsockopen、或是file操作函數來進行HTTP協定的處理,所以,我們對這塊的逾時處理也是必須的。

推薦教學:PHP影片教學

####

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

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

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )專業的PHP整合開發工具