天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

PHP file_get_contents設(shè)置超時(shí)處理方法

file_get_contents的超時(shí)處理

話說,從php5開始,file_get_content已經(jīng)支持context了(手冊上寫著:5.0.0 Added the context support. ),也就是說,從5.0開始,file_get_contents其實(shí)也可以POST數(shù)據(jù)。

今天說的這篇是講超時(shí)的,確實(shí)在跨服務(wù)器提交的時(shí)候,不可避免的會(huì)遇到超時(shí)的情況,這個(gè)時(shí)候怎么辦?set_time_limit是沒有用的,只有用context中的timeout時(shí)間來控制。相反,我們不是要抑止,而是要管理。比如在超時(shí)返回錯(cuò)誤后,進(jìn)行一次嘗試,就象js中的 settimeout那樣,對函數(shù)重新處理。錯(cuò)誤超過3次或者5次后,我們就確實(shí)的認(rèn)為無法連接服務(wù)器而徹底放棄。這,是一個(gè)好辦法,應(yīng)該值得推薦使用。其實(shí)。不全是file_get_contents,只要支持context的都應(yīng)該加上,避免超時(shí)浪費(fèi)時(shí)間。這樣可以被支持的函數(shù)大致有:fsocketopen(該函數(shù)的最后一個(gè)參數(shù)。好象比較推薦在讀stream的時(shí)候,使用stream_time_out函數(shù)進(jìn)行控制),fopen(也是從php5開始加入context支持),file(php5加入支持),curl(curl有自已的變量 CURLOPT_TIMEOUT)等 。

在使用file_get_contents函數(shù)的時(shí)候,經(jīng)常會(huì)出現(xiàn)超時(shí)的情況,在這里要通過查看一下錯(cuò)誤提示,看看是哪種錯(cuò)誤,比較常見的是讀取超 時(shí),這種情況大家可以通過一些方法來盡量的避免或者解決。這里就簡單介紹兩種:

一、增加超時(shí)的時(shí)間限制

這里需要注意:set_time_limit只是設(shè)置你的php程序的超時(shí)時(shí)間,而不是file_get_contents函數(shù)讀取URL的超時(shí)時(shí) 間。

我一開始以為set_time_limit也能影響到file_get_contents,后來經(jīng)測試,是無效的。真正的修改 file_get_contents延時(shí)可以用resource $context的timeout參數(shù):

復(fù)制代碼 代碼如下:
$opts = array(  
  'http'=>array(  
    'method'=>"GET",  
    'timeout'=>1,//單位秒 
   )  
);   

 $cnt=0;  
while($cnt<3 && ($bb=file_get_contents("http://www.jb51.NET", false, stream_context_create($opts)))===FALSE) $cnt++;  
echo $cnt;  
echo $bb; 

二、一次有延時(shí)的話那就多試幾次

有時(shí)候失敗是因?yàn)?a href=/pingce/wangluo/ target=_blank class=infotextkey>網(wǎng)絡(luò)等因素造成,沒有解決辦法,但是可以修改程序,失敗時(shí)重試幾次,仍然失敗就放棄,因?yàn)閒ile_get_contents()如果失 敗將返回 FALSE,所以可以下面這樣編寫代碼:

復(fù)制代碼 代碼如下:
$cnt=0;  
 while($cnt<3 && ($bb=file_get_contents("http://www.jb51.NET", false, stream_context_create($opts)))===FALSE) $cnt++;

以上方法對付超時(shí)已經(jīng)OK了。那么Post呢?細(xì)心點(diǎn)有人發(fā)現(xiàn)了'method'=>”GET”, 對!是不是能設(shè)置成post呢?百度找了下相關(guān)資料,還真可以!而且有人寫出了山寨版的post傳值函數(shù),如下:

復(fù)制代碼 代碼如下:
function Post($url, $post = null){  
    $context = array ();  
    if (is_array ( $post )) {  
        ksort ( $post );  
        $context ['http'] = array (  
            'timeout' => 60,   
            'method' => 'POST',   
            'content' => http_build_query( $post, '', '&' )  
         );  

    }  
    return file_get_contents ( $url, false, stream_context_create ( $context ) );  
}  

 $data = array (  
    'name' => 'test',  
    'email' => '[email protected]',  
    'submit' => 'submit',  
);  
echo Post ( 'http://www.jb51.NET', $data ); 

OK , 上面函數(shù)完美了,既解決了超時(shí)控制又解決了Post傳值。

php技術(shù)PHP file_get_contents設(shè)置超時(shí)處理方法,轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 影音先锋av333资源网 | 色老汉网址导航 | 亚洲第一页视频 | 手机在线观看毛片 | 国产精品xxxav免费视频 | 青青久在线视频免费观看 | 成人免费视频在线 | 老熟女毛茸茸浓毛 | 日韩欧美一区二区三区免费看 | 亚洲AV无码影院在线播放 | 亚洲av欧美在我 | 国产日韩成人内射视频 | 日本一区不卡在线播放视频免费 | 欧美wwwvideos在线观看 | 亚洲免费在线观看视频 | 亚洲宅男天堂a在线 | 国产精品亚洲精品日韩电影 | 亚洲黄色三级视频 | 亚洲精品乱码电影在线观看 | 美女裸露胸部100%无遮挡 | 精品久久电影网 | 国产亚洲欧美在线观看三区 | 果冻传媒APP免费网站在线观看 | 久久成人免费观看全部免费 | 日韩一本道无码v | 激情A片久久久久久久 | 97在线视频免费人妻 | 91精品婷婷国产综合久久8 | 日日啪无需播放器 | 高挑人妻无奈张开腿 | 国产精品久久人妻拍拍水牛影视 | 亚洲欧美一区二区三区九九九 | 久久久影院亚洲精品 | 羞羞漫画视频 | 天天躁日日躁狠狠躁AV麻豆 | 伊人久久综合成人亚洲 | 久久综合色一综合色88中文 | 欧美乱妇15p图 | 被两根巨大同时进去高H | 国产在线精品亚洲第1页 | 日本性hd|