当前位置: 首页 > news >正文

PHP获取大文件行数

在PHP中获取大文件的行数时,直接读取整个文件到内存中可能会导致内存溢出,特别是对于非常大的文件。因此,最有效的方法是逐行读取文件并计数。以下是一些实现方法:

方法一:使用 fgets()

fgets() 函数逐行读取文件,可以有效地处理大文件。

<?phpfunction countLinesUsingFgets($filename) {$lineCount = 0;$handle = fopen($filename, "r");if ($handle) {while (($line = fgets($handle)) !== false) {$lineCount++;}fclose($handle);} else {echo "无法打开文件: $filename";}return $lineCount;
}$filename = 'largefile.txt';
echo "行数: " . countLinesUsingFgets($filename);?>

方法二:使用 SplFileObject

SplFileObject 是PHP标准库中的一个类,提供了面向对象的文件操作接口。

<?phpfunction countLinesUsingSplFileObject($filename) {$file = new SplFileObject($filename, "r");$lineCount = 0;while (!$file->eof()) {$file->next();$lineCount++;// 或者使用 $file->current() 来处理当前行内容}return $lineCount;
}$filename = 'largefile.txt';
echo "行数: " . countLinesUsingSplFileObject($filename);?>

方法三:使用命令行工具(可选)

如果在服务器上运行PHP脚本,并且有权限执行系统命令,可以使用 wc -l 命令来获取行数。这种方法非常高效,但依赖于服务器环境。

<?phpfunction countLinesUsingCommand($filename) {$output = shell_exec("wc -l < " . escapeshellarg($filename));return (int)trim($output);
}$filename = 'largefile.txt';
echo "行数: " . countLinesUsingCommand($filename);?>

我的个人PHP项目:

PHP全文检索引擎 WindSearch: https://github.com/rock365/windsearch

请帮我点个star~谢谢你!

http://www.xdnf.cn/news/26263.html

相关文章:

  • 【MySQL】004.MySQL数据类型
  • P-Tuning提示词微调
  • 多人3D游戏完整实现方案
  • C++游戏服务器开发之⑦redis的使用
  • 基于LSTM-AutoEncoder的心电信号时间序列数据异常检测(PyTorch版)
  • 山东科技大学深度学习考试回忆
  • Java:使用Maven构建项目无src解决方案
  • 【java实现+4种变体完整例子】排序算法中【冒泡排序】的详细解析,包含基础实现、常见变体的完整代码示例,以及各变体的对比表格
  • 单元测试的一般步骤
  • RenderStage::runCameraSetUp
  • 如何查看HTTP状态码?
  • 【25软考网工笔记】第二章(6)脉冲编码调制PCM、通信和交换方式
  • Macvlan 网络类型详解:特点、优势与局限性
  • go-map+sync.map的底层原理
  • 【测试文档】项目测试文档,测试管理规程,测试计划,测试文档模版,软件测试报告书(Word)
  • FFmpeg+Nginx+VLC打造M3U8直播
  • 基于Ubuntu2504部署OpenStack E版
  • 详解与HTTP服务器相关操作
  • 利用yakit充实渗透字典
  • 【Vue】模板语法与指令
  • Android Studio 获取配置资源与第三方包信息详解
  • SICAR程序标准功能块 FB1512 “Robot_kuka_FB“
  • Windows Server .NET Core 应用程序部署到 IIS 解决首次访问加载慢的问题
  • 从零开始学习 Lucene.Net:.NET Core 中的全文搜索与索引管理
  • 深入Docker核心技术:从Namespace到容器逃逸防御
  • 【MySQL】MySQL建立索引不知道注意什么?
  • 国产之光DeepSeek架构理解与应用分析04
  • 【论文阅读21】-PSOSVM-CNN-GRU-Attention-滑坡预测(2024-12)
  • 模拟投资大师思维:AI对冲基金开源项目详解
  • 故障诊断 | CNN-BiGRU-Attention故障诊断