我需要讀取一個大的 txt 文件(超過 1GB)才能提取其中的多個字符串。使用 gzread,我可以從頭讀取到一定量的 kb(比如 1000000)。但是我怎樣才能讀取文件的下一個 1000000kb 呢?有沒有辦法從一個點開始並從那裡讀取 1000000kb 直到文件沒有完成?
$filename = "my_big_file.txt.gz";
$zd = gzopen($filename, "r");
$readfile = gzread($zd,1000000);
$first_array = explode("IT\\",$readfile);
unset($first_array[0]);
foreach($first_array as $row){
$full_id = explode(" ",$full_id);
echo $full_id[0];
echo "<br>";
}
gzclose($zd);
$filename = "my_big_file.txt.gz";
$zd = gzopen($filename, "r");
fseek($zd, 1000000); # jump to a new position here
$readfile = gzread($zd,1000000);
//...process $readfile
gzclose($zd);
給定的是以下文本文件:
12345678
Gzip 文本文件:
gzip test.txt
創建一個新文件: test.txt.gz
function getGzFileChunk(string $filename, int $start, int $end)
{
$zd = gzopen($filename, "r");
fseek($zd, $start);
$readfile = gzread($zd, $end);
gzclose($zd);
return $readfile;
}
var_dump(getGzFileChunk("test.txt.gz", 3, 2)); //output: 45
var_dump(getGzFileChunk("test.txt.gz", 1, 2)); //output: 23
var_dump(getGzFileChunk("test.txt.gz", 4, 2)); //output: 56
var_dump(getGzFileChunk("test.txt.gz", 6, 2)); //output: 78
var_dump(getGzFileChunk("test.txt.gz", 2, 2)); //output: 34
將 放入gzread
while 循環中,如下所示:
<?php
$filename = "my_big_file.txt.gz";
$zd = gzopen($filename, "r");
while($readfile = gzread($zd,1000000)) {
//...your process
}
gzclose($zd);
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句