php – Fgets进展 – 更简单的方法?
发布时间:2020-12-13 15:58:53 所属栏目:PHP教程 来源:网络整理
导读:我读了一个大文本文件~500MB,希望在我的阅读操作中取得进展. 为此,我现在计算文件所包含的行,然后将其与我已读过的行进行比较.这需要对文件进行两次完整的迭代.使用filesize和fgets缓冲区大小有更简单的方法吗? 我目前的代码如下: $lineTotal = 0;while ((
我读了一个大文本文件~500MB,希望在我的阅读操作中取得进展.
为此,我现在计算文件所包含的行,然后将其与我已读过的行进行比较.这需要对文件进行两次完整的迭代.使用filesize和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,这应该不是一个直接的问题. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |