php 使用file_get_contents讀取大文件的方法
當(dāng)我們遇到文本文件體積很大時(shí),比如超過幾十M甚至幾百M(fèi)幾G的大文件,用記事本或者其它編輯器打開往往不能成功,因?yàn)樗麄兌夹枰盐募?nèi)容全部放到內(nèi)存里面,這時(shí)就會(huì)發(fā)生內(nèi)存溢出而打開錯(cuò)誤,遇到這種情況我們可以使用PHP的文件讀取函數(shù)file_get_contents()進(jìn)行分段讀取。
函數(shù)說明
string file_get_contents ( string $filename [, bool $use_include_path [, resource $context [, int $offset [, int $maxlen ]]]] )
和 file() 一樣,只除了 file_get_contents() 把文件讀入一個(gè)字符串。將在參數(shù) offset 所指定的位置開始讀取長(zhǎng)度為 maxlen 的內(nèi)容。如果失敗,file_get_contents() 將返回 FALSE。
file_get_contents() 函數(shù)是用來將文件的內(nèi)容讀入到一個(gè)字符串中的首選方法。如果操作系統(tǒng)支持還會(huì)使用內(nèi)存映射技術(shù)來增強(qiáng)性能。
應(yīng)用:
$str = $content=file_get_contents("2.sql",FALSE,NULL,1024*1024,1024);
echo $str;
如果針對(duì)較小文件只是希望分段讀取并以此讀完可以使用fread()函數(shù)
$fp=fopen('2.sql','r');
while (!feof($fp)){
$str.=fread($fp, filesize ($filename)/10);//每次讀出文件10分之1
//進(jìn)行處理
}
echo $str;
以上就是如何使用file_get_contents函數(shù)讀取大文件的方法,超級(jí)簡(jiǎn)單吧,需要的小伙伴直接搬走!
相關(guān)文章
PHP實(shí)現(xiàn)網(wǎng)站應(yīng)用微信登錄功能詳解
這篇文章主要介紹了PHP實(shí)現(xiàn)網(wǎng)站應(yīng)用微信登錄功能,結(jié)合實(shí)例形式詳細(xì)分析了php實(shí)現(xiàn)微信授權(quán)登錄功能的具體操作步驟與相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2019-04-04php實(shí)現(xiàn)將二維關(guān)聯(lián)數(shù)組轉(zhuǎn)換成字符串的方法詳解
這篇文章主要介紹了php實(shí)現(xiàn)將二維關(guān)聯(lián)數(shù)組轉(zhuǎn)換成字符串的方法,涉及php數(shù)組遞歸遍歷、轉(zhuǎn)換、去重、拼接等相關(guān)操作技巧,需要的朋友可以參考下2017-07-07PHP常量使用的幾個(gè)需要注意的地方(謹(jǐn)慎使用PHP中的常量)
常量包含數(shù)字字母字符和下劃線,數(shù)字允許作為常量名。 常量名的所有字母必須大寫。類常量必須通過 const 定義為類的成員,強(qiáng)烈不鼓勵(lì)使用 define 定義的全局常量2014-09-09php開啟與關(guān)閉錯(cuò)誤提示適用于沒有修改php.ini的權(quán)限
本節(jié)為大家介紹的是php開啟與關(guān)閉錯(cuò)誤提示的方法,如果不具備修改php.ini的權(quán)限,可以將如下代碼加入php文件中2014-10-10PHP中fwrite與file_put_contents性能測(cè)試代碼
這里測(cè)試的是往文件中寫一百萬行記錄,如果數(shù)據(jù)量很小,比如1000條左右的記錄,可能差距不大2013-08-08ajax+php打造進(jìn)度條代碼[readyState各狀態(tài)說明]
用Ajax+php打造進(jìn)度條,其實(shí)很簡(jiǎn)單。2010-04-04