淺析php中如何在有限的內(nèi)存中讀取大文件
更新時(shí)間:2013年07月02日 10:45:20 作者:
突然遇到了一個(gè)要讀取超過80M文件的需求,很悲劇的,不管是file_get_content還是file什么的,都會(huì)將讀取的文件一次性加載到內(nèi)存中
正常情況下,我們可以使用fseek來讀取,好處就是不會(huì)一次性讀取,以下代碼只適合邊取邊處理的情況,不適合一次性讀取一次性處理。
可以用以下辦法生成測試文件
$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);
可以用以下辦法生成測試文件
復(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);
您可能感興趣的文章:
- 訪問php時(shí)提示內(nèi)存位置訪問無效的解決辦法和思路分析
- 采用PHP函數(shù)memory_get_usage獲取PHP內(nèi)存清耗量的方法
- PHP中使用unset銷毀變量并內(nèi)存釋放問題
- phpExcel導(dǎo)出大量數(shù)據(jù)出現(xiàn)內(nèi)存溢出錯(cuò)誤的解決方法
- php頁面消耗內(nèi)存過大的處理辦法
- 解析PHP中的內(nèi)存管理,PHP動(dòng)態(tài)分配和釋放內(nèi)存
- PHP變量內(nèi)存分配問題記錄整理
- php出現(xiàn)內(nèi)存位置訪問無效錯(cuò)誤問題解決方法
- PHP腳本內(nèi)存泄露導(dǎo)致Apache頻繁宕機(jī)解決方法
- php實(shí)現(xiàn)讀取內(nèi)存順序號(hào)
相關(guān)文章
利用PHP獲取訪客IP、地區(qū)位置、瀏覽器及來源頁面等信息
這篇文章主要介紹了利用PHP獲取訪客IP、地區(qū)位置、瀏覽器及來源頁面等信息的相關(guān)資料,文中給出了詳細(xì)的示例代碼供大家參考學(xué)習(xí),對(duì)大家具有一定的參考借鑒價(jià)值,需要的朋友們下面來一起看看吧。2017-06-06PHP PDO函數(shù)庫(PDO Functions)
PDO是一個(gè)“數(shù)據(jù)庫訪問抽象層”,作用是統(tǒng)一各種數(shù)據(jù)庫的訪問接口,與mysql和mysqli的函數(shù)庫相比,PDO讓跨數(shù)據(jù)庫的使用更具有親和力.2009-07-07PHP設(shè)計(jì)模式之 策略模式Strategy詳解【對(duì)象行為型】
這篇文章主要介紹了PHP設(shè)計(jì)模式之 策略模式Strategy,結(jié)合實(shí)例形式詳細(xì)分析了PHP基于對(duì)象行為型的策略模式Strategy具體原理、實(shí)現(xiàn)技巧與相關(guān)操作注意事項(xiàng),需要的朋友可以參考下2020-05-05php錯(cuò)誤提示failed to open stream: HTTP request failed!的完美解決方法
當(dāng)使用php5自帶的file_get_contents方法來獲取遠(yuǎn)程文件的時(shí)候,有時(shí)候會(huì)出現(xiàn)file_get_contents(): failed to open stream: HTTP request failed!這個(gè)警告信息。2011-06-06PHP使用自定義方法實(shí)現(xiàn)數(shù)組合并示例
這篇文章主要介紹了PHP使用自定義方法實(shí)現(xiàn)數(shù)組合并示例,涉及php針對(duì)數(shù)組的遍歷、判斷、轉(zhuǎn)換等相關(guān)操作技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2016-07-07php中文字母數(shù)字驗(yàn)證碼實(shí)現(xiàn)代碼
php下實(shí)現(xiàn)多種方式的驗(yàn)證碼實(shí)現(xiàn)效果代碼2008-04-04