作者linbob09 (累斃了)
看板PHP
標題[請益] PHP讀取.txt檔的速度
時間Thu Mar 3 16:48:03 2011
最近在用PHP寫讀檔的東西,覺得讀取檔案內容的速度非常的慢
檔案的內容例子如下:
.
.
.
一下 2
一下這 3
一下這一 4
一下這一疊 3
.
.
.
這樣的內容大約有1萬行,大小183K
但是讀取的時間卻花了約44秒左右,有時候甚至會7X秒,讓我感到不可思議
讀檔的code如下:
$Handle = fopen($FileLocation,"r+");
while(!feof($Handle)){
$FileContent[] = fgets($Handle);
$FileContent = str_replace("\xef\xbb\xbf","",$FileContent);//BOM清除
//讀出重複次數(0-9999)
preg_match("/\d\d\d\d|\d\d\d|\d\d|\d/",$FileContent[$i],$Match);
$Multiplicity[] = $Match[0];
//讀出次數END
//取出中文字
$FileContent[$i] = str_replace(" ",".",$FileContent[$i]);
$Mode1 = "/[.]/";//以.分段
$Content = preg_split($Mode1,$FileContent[$i],-1);
$FileContent[$i] = $Content[0];
//取出中文字END
$i++;
}
fclose($Handle);
會不會是在preg_match占用太多時間嗎?
還是有其他方法能夠增加讀檔案的速度...
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 163.13.127.146
1F:推 Jerr:丟ramfs吧 03/03 16:48
2F:推 Jerr:考不考慮用 $FileContent = file_get_contents($File) 03/03 16:52
3F:→ Jerr:一次全部讀出來再處理啊 反正你還是用了那麼多的記憶體 03/03 16:53
4F:→ linbob09:我原本設計是讀一行判斷一行,如果用一次讀完的話可能又 03/03 16:58
5F:→ linbob09:要改判斷的程式碼 03/03 16:58
6F:→ MOONRAKER:改啊有什麼好怕的,反正你都嫌慢了 03/03 17:02
7F:→ linbob09:OK我試試看... 03/03 17:12