PHP請求遠端位址設定超時時間

2021-07-26 03:44:55 字數 3042 閱讀 8449

php請求遠端位址設定超時時間,主要講解file_get_contents、fopen、curl這三個簡單常用函式設定超時時間的方法,一般情況下建議使用curl,效能最好,效率也最高,。

1、file_get_contents 請求超時設定

'timeout'=>5//設定乙個超時時間,單位為秒));

$ctx = stream_context_create($timeout);

$text = file_get_contents("",0, $ctx);2、fopen 請求超時設定

'timeout' => 5 //設定乙個超時時間,單位為秒));

$ctx = stream_context_create($timeout);

if ($fp = fopen("", "r", false, $ctx))

fclose($fp);

}3、curl請求超時設定

curl 是常用的訪問http協議介面的lib庫,效能高,還有一些併發支援的功能等。

curl_setopt($ch, opt) 可以設定一些超時的設定,主要包括:a 、curlopt_timeout 設定curl允許執行的最長秒數。b、curlopt_timeout_ms 設定curl允許執行的最長毫秒數。c、 curlopt_connecttimeout 在發起連線前等待的時間,如果設定為0,則無限等待。d、 curlopt_connecttimeout_ms 嘗試連線等待的時間,以毫秒為單位。如果設定為0,則無限等待。e、 curlopt_dns_cache_timeout 設定在記憶體中儲存dns資訊的時間,預設為120秒。

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普通秒級超時使用:

curl_setopt($ch, curlopt_timeout, 60);

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

curl_easy_setopt(curl, curlopt_nosignal, 1l);

或者是:

curl_setopt ( $ch,  curlopt_nosignal, true); 是可以支援毫秒級別超時設定的

$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_useragent, $defined_vars['http_user_agent']);

[流處理方式訪問http]

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

一般連線超時可以直接設定,但是流讀取超時需要單獨處理。

自己寫**處理:

$tmcurrent = gettimeofday();

$intusgone = ($tmcurrent['sec'] - $tmstart['sec']) * 1000000

+ ($tmcurrent['usec'] - $tmstart['usec']);

if ($intusgone > $this->_intreadtimeoutus)

或者使用內建流處理函式 stream_set_timeout() 和 stream_get_meta_data() 處理:

<?php

// timeout in seconds

$timeout = 5;

$fp = fsockopen("example.com", 80, $errno, $errstr, $timeout);

if ($fp)

if ($info['timed_out']) else

}

Http請求設定超時時間

原設定如下 建立httppost 要加超時時間,修改後為 建立預設的httpclient例項.建立httppost 主要的改變是初始化httpclient時候 建立預設的httpclient例項.requestconfig defaultrequestconfig requestconfig.cus...

php指令碼超時時間設定

設定php指令碼執行超時的時間有下面這樣一些方法 php.ini 中預設的最長執行時間是 30 秒,這是由 php.ini 中的 max execution time 變數指定,倘若你有乙個需要頗多時間才能完成的工作,例如要傳送很多電子郵件給大量收件者,或者要進行繁重的資料分析工作,伺服器會在 30...

php指令碼超時時間設定

設定php指令碼執行超時的時間有下面這樣一些方法 php.ini 中預設的最長執行時間是 30 秒,這是由 php.ini 中的 max execution time 變數指定,倘若你有乙個需要頗多時間才能完成的工作,例如要傳送很多電子郵件給大量收件者,或者要進行繁重的資料分析工作,伺服器會在 30...