当前位置: 首页 > 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~谢谢你!

相关文章:

  • 实现Azure Function安全地请求企业内部API返回数据
  • springAi---智能客服
  • Python语法系列博客 · 第4期[特殊字符] 函数的定义与使用:构建可复用的模块
  • 机器学习误差图绘
  • SEO长尾关键词优化实战
  • JAVAEE(网络原理—UDP报头结构)
  • 一个 CTO 的深度思考
  • Vue+Notification 自定义消息通知组件 支持数据分页 实时更新
  • pycharm中怎么解决系统cuda版本高于pytorch可以支持的版本的问题?
  • 【Linux篇】探索进程间通信:如何使用匿名管道构建高效的进程池
  • 洛谷P3373线段树详解【模板】
  • 如何优雅地为 Axios 配置失败重试与最大尝试次数
  • 掌握 MySQL:从命令行操作到数据类型与字段管理
  • Windows上安装FFmpeg的详细指南
  • 树莓派超全系列教程文档--(33)树莓派启动选项
  • Git 中修改某个特定的commit提交内容
  • JMeter介绍
  • C++按位与()、按位或(|)和按位异或(^)
  • PG数据库推进医疗AI向量搜索优化路径研究(2025年3月修订版)
  • 英语四级翻译题练习文章示例
  • 【社论】高度警惕AI谣言对网络空间的污染
  • 中国乒乓球队公示多哈世乒赛参赛名单,王楚钦孙颖莎混双重组
  • 世界读书日丨这50本书,商务印书馆推荐给教师
  • “代课老师被男友杀害案”一审开庭,将择期宣判
  • 中印尼举行外长防长“2+2”对话机制首次部长级会议
  • 用了半年的洗衣机竟比马桶还脏,别再这样洗衣服了