gpt4 book ai didi

php - Fgets 进步 - 更简单的方法?

转载 作者:可可西里 更新时间:2023-10-31 23:38:44 26 4
gpt4 key购买 nike

我读取了一个大约 500MB 的大文本文件,并希望了解读取操作的进度。

为此,我现在计算文件的行数,然后将其与我已阅读的行进行比较。这需要对文件进行两次完整的迭代。使用文件大小和 fgets 缓冲区大小是否有更简单的方法?

我当前的代码如下:

$lineTotal = 0;
while ((fgets($handle)) !== false) {
$lineTotal++;
}

rewind($handle);

$linesDone = 0;
while (($line = fgets($handle)) !== false) {
progressBar($linesDone += 1, $lineTotal);
}

最佳答案

基于字节而不是行,但您可以使用 filesize 快速获取文件的总大小:

$bytesTotal = filesize("input.txt")

然后,打开文件后,您可以阅读每一行,然后得到您的 current position在文件中,类似于:

progressBar(0, $bytesTotal);
while (($line = fgets($handle)) !== false) {
doSomethingWith($line, 'presumably');
progressBar(ftell($handle), $bytesTotal);
}

需要注意的是,PHP 整数可能无法处理超过 2G 的文件,但是,由于您指定的文件约为 500M,因此这不应该是一个直接的问题。

关于php - Fgets 进步 - 更简单的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33297208/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com