麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > PHP > 正文

PHP file_get_contents設置超時處理方法

2020-03-22 20:19:10
字體:
來源:轉載
供稿:網友
file_get_contents的超時處理話說,從PHP5開始,file_get_content已經支持context了(手冊上寫著:5.0.0 Added the context support. ),也就是說,從5.0開始,file_get_contents其實也可以POST數據。今天說的這篇是講超時的,確實在跨服務器提交的時候,不可避免的會遇到超時的情況,這個時候怎么辦?set_time_limit是沒有用的,只有用context中的timeout時間來控制。相反,我們不是要抑止,而是要管理。比如在超時返回錯誤后,進行一次嘗試,就象js中的 settimeout那樣,對函數重新處理。錯誤超過3次或者5次后,我們就確實的認為無法連接服務器而徹底放棄。這,是一個好辦法,應該值得推薦使用。其實。不全是file_get_contents,只要支持context的都應該加上,避免超時浪費時間。這樣可以被支持的函數大致有:fsocketopen(該函數的最后一個參數。好象比較推薦在讀stream的時候,使用stream_time_out函數進行控制),fopen(也是從PHP5開始加入context支持),file(PHP5加入支持),curl(curl有自已的變量 CURLOPT_TIMEOUT)等 。在使用file_get_contents函數的時候,經常會出現超時的情況,在這里要通過查看一下html' target='_blank'>錯誤提示,看看是哪種錯誤,比較常見的是讀取超 時,這種情況大家可以通過一些方法來盡量的避免或者解決。這里就簡單介紹兩種:一、增加超時的時間限制這里需要注意:set_time_limit只是設置你的PHP程序的超時時間,而不是file_get_contents函數讀取URL的超時時 間。我一開始以為set_time_limit也能影響到file_get_contents,后來經測試,是無效的。真正的修改 file_get_contents延時可以用resource $context的timeout參數:復制代碼 代碼如下:
$opts = array(
'http'= array(
'method'= "GET",
'timeout'= 1,//單位秒
)
);

$cnt=0;
while($cnt 3 && ($bb=file_get_contents("http://www.phpstudy.net", false, stream_context_create($opts)))===FALSE) $cnt++;
echo $cnt;
echo $bb;
二、一次有延時的話那就多試幾次有時候失敗是因為網絡等因素造成,沒有解決辦法,但是可以修改程序,失敗時重試幾次,仍然失敗就放棄,因為file_get_contents()如果失 敗將返回 FALSE,所以可以下面這樣編寫代碼:復制代碼 代碼如下:
$cnt=0;
while($cnt 3 && ($bb=file_get_contents("http://www.phpstudy.net", false, stream_context_create($opts)))===FALSE) $cnt++;
以上方法對付超時已經OK了。那么Post呢?細心點有人發現了'method'= ”GET”, 對!是不是能設置成post呢?百度找了下相關資料,還真可以!而且有人寫出了山寨版的post傳值函數,如下:復制代碼 代碼如下:
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.phpstudy.net', $data );
OK , 上面函數完美了,既解決了超時控制又解決了Post傳值。PHP教程

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 国产精品一区视频 | 欧美1 | 极品xxxx欧美一区二区 | 久国久产久精永久网页 | 国产成视频在线观看 | 99re色| 康妮卡特欧美精品一区 | 免费一级在线观看 | 国产一级aaa全黄毛片 | 日产精品久久久一区二区福利 | 亚洲欧美国产精品va在线观看 | 欧美精品一区二区视频 | 久久国产中文字幕 | 999精品国产 | 香蕉国产片 | 在线成人免费视频 | 国产一级免费视频 | 国产一精品一av一免费爽爽 | 国产午夜精品在线 | 九九热精品视频在线 | 暖暖免费观看高清完整版电影 | 精国产品一区二区三区四季综 | 亚洲一区二区在线视频 | 欧美一级做一a做片性视频 日韩黄色片免费看 | 九色激情网 | 亚洲日色 | 特级a欧美做爰片毛片 | 在线a | 91成人免费视频 | 国产精品视频在线观看免费 | 亚洲性生活免费视频 | 欧美乱淫 | 亚洲成人午夜精品 | 国产成人精品一区在线播放 | 九色在线78m | 国产毛片aaa一区二区三区视频 | 久久精品黄 | 亚洲成人免费视频在线 | 欧美视频国产 | 精品一区二区中文字幕 | 桥本有菜免费av一区二区三区 |