php - 使用 PHP 在一个大文件中获取一行

标签 php

如何获取 3 gig 文本文件中的特定行。这些行由\n 分隔。我需要能够按需接通任何线路。

如何做到这一点?只需要返回一行。而且我不想使用任何系统调用。

注意:关于如何在 bash 中执行此操作,其他地方也有同样的问题。我想将它与 PHP equiv 进行比较。

更新:每一行在整个过程中都是相同的长度。

最佳答案

如果不为文件保留某种索引,您将需要读取所有文件,直到遇到 x 个\n 字符。我看到 nickf 刚刚发布了一些这样做的方法,所以我不再重复。

要以高效的方式重复执行此操作,您需要构建索引。为某些(或所有)行号存储一些已知的文件位置一次,然后您可以使用它来使用 fseek 寻找正确的位置.

编辑:如果每行长度相同,则不需要索引。

$myfile = fopen($fileName, "r");
fseek($myfile, $lineLength * $lineNumber);
$line = fgets($myfile);
fclose($myfile);

在此示例中,行号为 0,因此您可能需要先减去 1。行长度包括 \n 字符。

关于php - 使用 PHP 在一个大文件中获取一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2794056/

相关文章:

php - 移动 Chrome 主屏幕 webapp 无法打开 index.php

php - 在 PHP 中,在数组中搜索包含子字符串的值的快速方法是什么?

javascript - 表单已验证但未发送电子邮件

php - 如何使用 laravel 6 在我的包中使用 auth 进行自定义保护?

javascript - 中止 POST XHR 可靠吗?

php - MySQL:将多个表值插入一个

显示两个结果的 PHP 条件

php - Mysql/php - 是否可以使用循环但没有 key 更新表?

php - 如何确保我的哈希值是唯一的?

javascript - 动态添加的表单字段不会发布到服务器