file_get_contents的高級用法分享

來源:互聯網
上載者:User
關於file_get_contents的高級用法,首先解決file_get_contents的逾時問題,在逾時返回錯誤後就象js中的settimeout那樣進行一次嘗試,錯誤超過3次或者5次後就確認為無法連線伺服器而徹底放棄。

這裡就簡單介紹兩種解決方案:

一、增加逾時的時間限制

注意:set_time_limit只是設定你的PHP程式的逾時時間,而不是file_get_contents函數讀取URL的逾時時間。

我一開始以為set_time_limit也能影響到file_get_contents,後來經測試是無效的。真正的修改file_get_contents延時可以用resource $context的timeout參數:

PHP程式碼如下:


$opts = array(    'http'=>array(      'method'=>"GET",      'timeout'=>60,    ));$context = stream_context_create($opts);$html =file_get_contents('http://www.php.cn', false, $context);fpassthru($fp);

二、多次嘗試

PHP程式碼如下:


$cnt=0;while($cnt < 3 && ($str=@file_get_contents('http...'))===FALSE){   $cnt++;}

以上方法對付逾時已經OK了。接下來示範一下用file_get_contents實現Post,如下:
PHP程式碼


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' => 'test@gmail.com',    'submit' => 'submit',);echo Post('http://www.php.cn', $data);

注意文檔頭的Set_time_out否則整個文檔都得逾時了。

相關推薦:
php fopen()和file_get_contents()的區別詳細講解

php中比file_get_contents()更優的cURL的執行個體詳解

有關file_get_contents的文章推薦10篇

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.