日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

file_get_contents高級用法

 明天網(wǎng)吧 2015-04-03

file_get_contents高級用法

首先解決file_get_contents的超時問題,在超時返回錯誤後就象js中的settimeout那樣進行一次嘗試,錯誤超過3次或者5次後就確認(rèn)為無法連線伺服器而徹底放棄。
這裡就簡單介紹兩種解決方法:

一、增加超時的時間限制

注意:set_time_limit只是設(shè)定你的PHP程式的超時時間,而不是file_get_contents函數(shù)讀取URL的超時時間。
我一開始以為set_time_limit也能影響到file_get_contents,後來經(jīng)測試是無效的。真正的修改file_get_contents延時可以用resource $context的timeout參數(shù):
PHP程式碼

    $opts = array(
        'http'=>array(
            'method'=>"GET",
            'timeout'=>60,
        )
    );

    $context = stream_context_create($opts);

    $html =file_get_contents('http://www.', false, $context);
    fpassthru($fp);

二、多次嘗試

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

以上方法對付超時已經(jīng)OK了。接下來演示一下用file_get_contents實現(xiàn)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.', $data);

注意檔案頭的Set_time_out否則整個檔案都得超時了

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多