淺析php中如何在有限的內(nèi)存中讀取大文件
更新時(shí)間:2013年07月02日 10:45:20 作者:
突然遇到了一個(gè)要讀取超過(guò)80M文件的需求,很悲劇的,不管是file_get_content還是file什么的,都會(huì)將讀取的文件一次性加載到內(nèi)存中
正常情況下,我們可以使用fseek來(lái)讀取,好處就是不會(huì)一次性讀取,以下代碼只適合邊取邊處理的情況,不適合一次性讀取一次性處理。
可以用以下辦法生成測(cè)試文件
$file_handle = fopen("./csdn.txt", "rb+");
for ($index1 = 1; $index1 <= 2000000; $index1++) {
fwrite($file_handle, 'http://jb51.net'.$index1."\r");
}
fclose($file_handle);
讀取處理代碼如下:
$i = 0;
$now = '';
while ($i >= 0) {
if ($i>10) {
break;
}
fseek($file_handle, 0, SEEK_CUR);
$now = fgetc($file_handle);//可以自己寫個(gè)判斷false表示文件到頭
if ($now == "\r") {
echo '找到斷點(diǎn)';
}
echo $now;
$i++;
}
fclose($file_handle);
可以用以下辦法生成測(cè)試文件
復(fù)制代碼 代碼如下:
$file_handle = fopen("./csdn.txt", "rb+");
for ($index1 = 1; $index1 <= 2000000; $index1++) {
fwrite($file_handle, 'http://jb51.net'.$index1."\r");
}
fclose($file_handle);
讀取處理代碼如下:
復(fù)制代碼 代碼如下:
$i = 0;
$now = '';
while ($i >= 0) {
if ($i>10) {
break;
}
fseek($file_handle, 0, SEEK_CUR);
$now = fgetc($file_handle);//可以自己寫個(gè)判斷false表示文件到頭
if ($now == "\r") {
echo '找到斷點(diǎn)';
}
echo $now;
$i++;
}
fclose($file_handle);
您可能感興趣的文章:
- 訪問(wèn)php時(shí)提示內(nèi)存位置訪問(wèn)無(wú)效的解決辦法和思路分析
- 采用PHP函數(shù)memory_get_usage獲取PHP內(nèi)存清耗量的方法
- PHP中使用unset銷毀變量并內(nèi)存釋放問(wèn)題
- phpExcel導(dǎo)出大量數(shù)據(jù)出現(xiàn)內(nèi)存溢出錯(cuò)誤的解決方法
- php頁(yè)面消耗內(nèi)存過(guò)大的處理辦法
- 解析PHP中的內(nèi)存管理,PHP動(dòng)態(tài)分配和釋放內(nèi)存
- PHP變量?jī)?nèi)存分配問(wèn)題記錄整理
- php出現(xiàn)內(nèi)存位置訪問(wèn)無(wú)效錯(cuò)誤問(wèn)題解決方法
- PHP腳本內(nèi)存泄露導(dǎo)致Apache頻繁宕機(jī)解決方法
- php實(shí)現(xiàn)讀取內(nèi)存順序號(hào)
相關(guān)文章
如何提高M(jìn)YSQL數(shù)據(jù)庫(kù)的查詢統(tǒng)計(jì)速度 select 索引應(yīng)用
如何提高M(jìn)YSQL數(shù)據(jù)庫(kù)的查詢統(tǒng)計(jì)速度 select 索引應(yīng)用2007-04-04
一個(gè)簡(jiǎn)潔實(shí)用的PHP緩存類完整實(shí)例
這篇文章主要介紹了一個(gè)簡(jiǎn)潔實(shí)用的PHP緩存類完整實(shí)例,緩存的應(yīng)用對(duì)于php大型項(xiàng)目的開(kāi)發(fā)來(lái)說(shuō)至關(guān)重要,需要的朋友可以參考下2014-07-07
php將字符串轉(zhuǎn)化成date存入數(shù)據(jù)庫(kù)的兩種方式
這篇文章主要介紹了php將字符串轉(zhuǎn)化成date存入數(shù)據(jù)庫(kù)的兩種方式,需要的朋友可以參考下2014-04-04
php實(shí)現(xiàn)數(shù)組按拼音順序排序的方法
這篇文章主要介紹了php實(shí)現(xiàn)數(shù)組按拼音順序排序的方法,涉及php漢字與拼音的轉(zhuǎn)換及數(shù)組遍歷、排序相關(guān)操作技巧,需要的朋友可以參考下2017-05-05
Zend Studio 實(shí)用快捷鍵一覽表(精心整理)
以下是小編精心整理的Zend Studio實(shí)用快捷鍵。很有用哦!需要的朋友可以過(guò)來(lái)參考下2013-08-08
php實(shí)現(xiàn)通過(guò)stomp協(xié)議連接ActiveMQ操作示例
這篇文章主要介紹了php實(shí)現(xiàn)通過(guò)stomp協(xié)議連接ActiveMQ操作,結(jié)合實(shí)例形式分析了stomp擴(kuò)展安裝及使用stomp擴(kuò)展連接ActiveMQ具體操作技巧,需要的朋友可以參考下2020-02-02
php性能優(yōu)化之不要在for循環(huán)中操作DB
這篇文章主要為大家介紹了php性能優(yōu)化之不要在for循環(huán)中操作DB示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06
PHP 通過(guò)Socket收發(fā)十六進(jìn)制數(shù)據(jù)的實(shí)現(xiàn)代碼
以下是對(duì)PHP中通過(guò)Socket收發(fā)十六進(jìn)制數(shù)據(jù)的實(shí)現(xiàn)代碼進(jìn)行了分析介紹。需要的朋友可以過(guò)來(lái)參考下2013-08-08

