亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > PHP > 正文

PHP大文件的讀取和寫入問題

2020-03-22 17:54:19
字體:
來源:轉載
供稿:網友
  • 在通常的學習和開發中,因為我們很少會接觸到大量數據的讀取和寫入,所以當突然有了這種需求的時候,我們可

    能仍然會按照一些比較快捷的方法,像file_get_contents,fread等方法來讀取文件,不過這樣以來如果讀取的文件太

    大,就會產生問題,在實現大文件讀取和寫入的時候查找了網上的一些資料,不過有些例子給的不是很符合我的需

    求,所以我就結合網上已有的例子,再寫一篇總結性的博客吧。

    那么究竟會產生什么問題呢,這就要說一些PHP的底層實現數,file_get_contents和fread來說一下,首先說一下

    PHP中文件讀取的函數,file_get_contents和fread,這兩個函數其實原理是相同的,都是讀取內容到系統的內存中,

    不過如果只是想將一個文件的內容讀入到一個字符串中,請使用file_get_contents(),它的性能比 fread() 好得多。

    在讀取不是很大的文件還是沒有問題的,不過當讀取大文件的時候(例如2GB的日志),如果你機器的內存只有4G,

    如果你將整個文件全部讀取然后存入字符串中,就可能會導致系統的內存爆掉造成卡死,因為還有一部分內存要用于

    維持系統的運行和其他進程的運行,既然會這樣,我們就需要一些其他辦法來避免一次性讀取太多的內容,通過這種

    辦法來實現大文件的讀取。

    PHP文件讀?。?/p>

    下面這個是網上讀取大文件的一個例子,來說明上面內存會爆掉的現象。。

    _________________________________無敵分割線_______________________________________


    需求如下: 現有一個1G左右的日志文件,大約有500多萬行, 用php返回最后幾行的內容。

    實現方法:

    1. 直接采用file函數來操作
    注:由于 file函數是一次性將所有內容讀入內存,而php為了防止一些寫的比較糟糕的程序占用太多的內存而導致系統內存不足,使服務器出現宕機,所以默認情況下限制只能最大使用內存16M,這是通過php.ini里的memory_limit = 16M來進行設置,這個值如果設置-1,則內存使用量不受限制.

    下面是一段用file來取出這具文件最后一行的代碼.
    整個代碼執行完成耗時 116.9613 (s).
    php對大文件進行讀取操作【OK】 - PHP程序員 - 李國華【PHP程序員C++】博客

    我機器是2個G的內存,當按下F5運行時,系統直接變灰,差不多20分鐘后才恢復過來,可見將這么大的文件全部直接讀入內存,后果是多少嚴重,所以不在萬不得以,memory_limit這東西不能調得太高,否則只有打電話給機房,讓reset機器了.

    _____________________________________無敵分割線_____________________________________

    上面的例子雖然是讀取最后幾行的例子,不過由于對文件的內容進行了遍歷,所以跟讀取整個文件是一樣的,不過如

    果是為了讀取最后幾行的內容,也可以直接用fseek來進行定位讀取部分內容。

    下面我們來一起探討下如何對大文件進行讀取和寫入。

    大文件讀取:

    因為要求讀取部分,如果文件不是特別大,可以通過file_get_contents或fread自帶的分割參數來進行分塊來進行讀?。ㄟ@個地方感覺需要加一個sleep函數,來減少IO的峰值大小,不過不知是否正確,希望大牛指點),還有一種方法,就是通過while循環,用fgets來進行逐行的讀取,因為fgetss是通過文件指針讀取一行,效率是比較高的。

    下面附上通過fgets實現的大文件讀取并對文件內容進行編碼轉換(UTF-8 -> GBK)的例子,代碼如下:

                $file = fopen($old_file_path,"r");            $result = fopen($temporary_file_path,"a");            $re_sign = 0;             while(!feof($file))            {                $content = fgets($file);                $encode = mb_detect_encoding($content, array('ASCII','UTF-8','GB2312','GBK','BIG5'));                 if ($encode == 'UTF-8') {                    $str = iconv($encode,"GBK//IGNORE", $content);                    $encode = mb_detect_encoding($content, array('ASCII','UTF-8','GB2312','GBK','BIG5'));                     fwrite($result, $str);                     $re_sign = 1;                 } else {                                        fwrite($result, $content);                 }            }            fclose($file);            fclose($result);            if($re_sign == 1){                                rename($old_file_path, $old_file_path . '.bak' );                rename($temporary_file_path, $old_file_path);                            } else {                unlink($temporary_file_path);            }

    大文件寫入:

    大文件的寫入相對大文件讀取來說產生的代價不是很大,因為文件寫入是寫入到硬盤中,如果一次性寫入文件過多,

    只會產生卡硬盤的現象,如果從效率上來講一次性直接寫入的耗時和效率最高,所以大文件的寫入的話建議一次性讀取后直接寫入文件中。

    PHP編程

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

  • 發表評論 共有條評論
    用戶名: 密碼:
    驗證碼: 匿名發表
    亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
    91欧美精品午夜性色福利在线| 欧美性20hd另类| 成人免费在线视频网址| 国产免费一区二区三区在线能观看| 成人国产精品一区二区| 国产亚洲精品一区二区| 亚洲精品乱码久久久久久金桔影视| 欧美黑人性视频| 成人久久18免费网站图片| 色悠久久久久综合先锋影音下载| 中文字幕日韩免费视频| 亚洲美女视频网| 国产精品久久久一区| 亚洲网址你懂得| 久久免费在线观看| 91av在线免费观看视频| 富二代精品短视频| 国产精品ⅴa在线观看h| 全色精品综合影院| 亚洲一二三在线| 91精品视频在线播放| 夜夜嗨av色综合久久久综合网| 欧美成人午夜免费视在线看片| 久热精品在线视频| 在线观看日韩专区| 久久久久这里只有精品| 国产精品一二区| 亚洲成人三级在线| 成人精品视频99在线观看免费| 成人免费视频网址| 在线精品国产成人综合| 亚洲综合成人婷婷小说| 麻豆一区二区在线观看| 亚洲精品国产精品自产a区红杏吧| 日韩欧美亚洲一二三区| 欧美日韩在线视频一区二区| 亚洲丝袜在线视频| 欧美孕妇毛茸茸xxxx| 国产成人精品网站| 亚洲精品国精品久久99热| 欧美午夜片在线免费观看| 亚洲欧美在线一区二区| 日产精品久久久一区二区福利| 国产精品久久久久久影视| 日韩激情视频在线| 在线视频日本亚洲性| 亚洲精品久久久久中文字幕欢迎你| 91色视频在线导航| 久久久久久国产三级电影| 国产亚洲精品久久久久动| 在线播放国产一区中文字幕剧情欧美| 一区二区亚洲精品国产| 亚洲色图色老头| 九九热r在线视频精品| 久久黄色av网站| 一本色道久久综合狠狠躁篇怎么玩| 亚洲欧美一区二区三区四区| 亚洲国产精品中文| 91精品久久久久久久久中文字幕| 狠狠色狠狠色综合日日五| 色偷偷av亚洲男人的天堂| 亚洲欧美国产一区二区三区| 成人在线国产精品| 国产成人精品一区二区在线| 欧美小视频在线| 黑人欧美xxxx| 日韩精品电影网| 日本sm极度另类视频| xxxx欧美18另类的高清| 久久国产精彩视频| 亚洲女人初尝黑人巨大| 国产精品高潮呻吟久久av无限| 亚洲国产精品系列| 97超级碰碰碰| 欧美性xxxx极品hd满灌| 久久久久久久久亚洲| 51色欧美片视频在线观看| 国产日韩欧美视频| 国产成人激情小视频| 久久久噜噜噜久久中文字免| 亚洲精品久久7777777| 欧美精品videos另类日本| 狠狠干狠狠久久| 久久国产精品影片| 久久综合网hezyo| 国产91精品久久久久久久| 国产精品最新在线观看| 亚洲最新在线视频| 另类图片亚洲另类| 91精品久久久久久久久久久久久| 91po在线观看91精品国产性色| 国产日产亚洲精品| 国内伊人久久久久久网站视频| 亚洲福利视频网| 日韩中文字幕国产| 国产亚洲日本欧美韩国| 伦伦影院午夜日韩欧美限制| 国产精品99久久久久久久久| 精品视频在线导航| 色悠久久久久综合先锋影音下载| 欧美国产日韩一区二区在线观看| 国产精品午夜国产小视频| 欧美日韩爱爱视频| 亚洲护士老师的毛茸茸最新章节| 成人av.网址在线网站| 亚洲精品午夜精品| 欧美一区二区三区免费观看| 国产美女主播一区| 欧美老妇交乱视频| 日本中文字幕不卡免费| 久久久免费高清电视剧观看| 亚洲男人天堂2023| 亚洲欧美日韩精品久久| 国产精品wwwwww| 国产精品久久久久秋霞鲁丝| 欧美激情网友自拍| 亚洲精品美女在线观看| 国产欧美日韩高清| 成人两性免费视频| 性日韩欧美在线视频| 精品人伦一区二区三区蜜桃免费| 欧美久久精品午夜青青大伊人| 久久久精品一区二区| 亚洲色图综合网| 久久91超碰青草是什么| 久99久在线视频| 午夜精品在线视频| 97超级碰碰碰| 亚洲精品狠狠操| 日韩美女在线观看一区| 5566成人精品视频免费| 欧美在线亚洲在线| 日韩免费观看在线观看| 久久久久久久国产精品| 91精品视频专区| 国产91热爆ts人妖在线| 91网站免费观看| 国产综合在线观看视频| 国产精品99久久久久久久久久久久| 国产亚洲精品久久久久久777| 欧美在线激情网| 欧美黑人巨大精品一区二区| 国产香蕉精品视频一区二区三区| 欧美日韩黄色大片| 亚洲视频在线观看| 亚洲第一中文字幕| 国产美女久久精品香蕉69| 国产婷婷97碰碰久久人人蜜臀| 欧美国产日韩二区| 性欧美亚洲xxxx乳在线观看| 亚洲色无码播放| 91国偷自产一区二区三区的观看方式| 国内外成人免费激情在线视频网站| 在线视频一区二区| 亚洲一区二区中文| 视频在线观看99| 韩国19禁主播vip福利视频| 最近日韩中文字幕中文| 91精品国产91久久久久久吃药| 欧美精品18videosex性欧美| 欧美精品福利视频| 国产精品香蕉国产| 亚洲老头同性xxxxx| 日本久久久久久久|