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