[Hintergrund]: Da die Dateifunktion den gesamten Inhalt auf einmal in den Speicher liest und PHP verwendet wird, um zu verhindern, dass einige schlecht geschriebene Programme zu viel Speicher beanspruchen, nicht genügend Systemspeicher verursachen und den Server abstürzen lassen, Daher ist es notwendig, sich etwas Besseres auszudenken.
[Ideen]:
01 思路1:利用php执行linux的命令,将一个文件内容(a.log)复制到另一个文件中(b.log) cat a.log >>b.log02 思路2:用php执行linux的head命令,获取内容,一行行写入另一个文件(b.log)中。 cat a.log|wc -l sed -n '1 p' a.logfileputcontents('b.log’, $content, FILE_APPEND);
[Code-Implementierung]:
1 //02.读取1G的文件内容 2 public function testGetLarge() 3 {/*{{{*/ 4 #01. 方法1 直接cat后重定向 5 #if('useCat' == 'useCat') 6 if(0 && 'useCat' == 'useCat') 7 { 8 `cat a.log>>b.log`; 9 } 10 11 #02. 使用flie_put_contents ,一行一行读取并追加写入 12 if('useFilePutContents' == 'useFilePutContents') 13 {/*{{{*/ 14 $lineNum = `cat a.log|wc -l`; 15 for($i=1; $i<= $lineNum; $i++) 16 { 17 $content = `sed -n '$i p' a.log`; 18 //文件追加 19 file_put_contents('b.log', $content, FILE_APPEND); 20 } 21 22 }/*}}}*/
Das obige ist der detaillierte Inhalt vonSo lesen Sie eine Dateigröße von 1 GB in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!