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...