我已经在使用这个如何逐行读取PHP中的大数据文件的示例
现在,它想要做的是获取文件中的总行数,以便我可以显示一个完整的百分比或至少是总行数,这样我就可以提供一些剩余处理的概念要完成.
有没有办法在没有读取整个文件两次的情况下获得总行数?(一次计算行数,一次进行处理)
cgp*_*cgp 12
可怜的人回答:
不,但你可以估计.计算一个简单的平均读数(使用前250行)并使用它.
estNumOfLines = sizeOfFile / avgLineSize
Run Code Online (Sandbox Code Playgroud)
您可以在创建文件时存储文件中的行数...
或者,您可以显示已处理的KB数,这将是完全准确的.
您可以确定文件的大小,然后通过将读取的大小相加来衡量您的进度:
$fname = 'foofile.txt';
$fsize = filesize($fname);
$count = 0;
$handle = fopen($fname, "r") or die("Couldn't get handle");
if ($handle) {
while (!feof($handle)) {
$buffer = fgets($handle, 4096);
// Process buffer here..
$count++;
echo ($count * 4096)/$fsize . " percent read.";
}
fclose($handle);
}
Run Code Online (Sandbox Code Playgroud)
注意:代码改编自参考答案
| 归档时间: |
|
| 查看次数: |
4967 次 |
| 最近记录: |