PHP如何高效读取大文件?
- 内容介绍
- 文章标签
- 相关推荐
本文共计3557个文字,预计阅读时间需要15分钟。
目录+量成功+我们的选择+逐行读取文件+文件间的管理+其他流+过滤器+自定义流+创建自定义协议和过滤器+总结+量成功+唯一确定我们对代码所做的改进是否有效的方式是:
目录
- 衡量成功
- 我们有什么选择?
- 逐行读取文件
- 文件之间的管道
- 其他流
- 过滤器
- 自定义流
- 创建自定义协议和过滤器
- 总结
衡量成功
唯一能确认我们对代码所做改进是否有效的方式是:衡量一个糟糕的情况,然后对比我们已经应用改进后的衡量情况。换言之,除非我们知道 “解决方案” 能帮我们到什么程度 (如果有的话),否则我们并不知道它是否是一个解决方案。
我们可以关注两个指标。首先是 CPU 使用率。我们要处理的过程运行得有多快或多慢?其次是内存使用率。脚本执行要占用多少内存?这些通常是成反比的 — 这意味着我们能够以 CPU 使用率为代价减少内存的使用率,反之亦可。
在一个异步处理模型 (例如多进程或多线程 PHP 应用程序) 中,CPU 和内存使用率都是重要的考量。在传统 PHP 架构中,任一达到服务器所限时这些通常都会成为一个麻烦。
测量 PHP 内部的 CPU 使用率是难以实现的。如果你确实关注这一块,可用考虑在 Ubuntu 或 macOS 中使用类似于 top 的命令。对于 Windows,则可用考虑使用 Linux 子系统,这样你就能够在 Ubuntu 中使用 top 命令了。
在本教程中,我们将测量内存使用情况。我们将看一下 “传统” 脚本会使用多少内存。我们也会实现一些优化策略并对它们进行度量。
本文共计3557个文字,预计阅读时间需要15分钟。
目录+量成功+我们的选择+逐行读取文件+文件间的管理+其他流+过滤器+自定义流+创建自定义协议和过滤器+总结+量成功+唯一确定我们对代码所做的改进是否有效的方式是:
目录
- 衡量成功
- 我们有什么选择?
- 逐行读取文件
- 文件之间的管道
- 其他流
- 过滤器
- 自定义流
- 创建自定义协议和过滤器
- 总结
衡量成功
唯一能确认我们对代码所做改进是否有效的方式是:衡量一个糟糕的情况,然后对比我们已经应用改进后的衡量情况。换言之,除非我们知道 “解决方案” 能帮我们到什么程度 (如果有的话),否则我们并不知道它是否是一个解决方案。
我们可以关注两个指标。首先是 CPU 使用率。我们要处理的过程运行得有多快或多慢?其次是内存使用率。脚本执行要占用多少内存?这些通常是成反比的 — 这意味着我们能够以 CPU 使用率为代价减少内存的使用率,反之亦可。
在一个异步处理模型 (例如多进程或多线程 PHP 应用程序) 中,CPU 和内存使用率都是重要的考量。在传统 PHP 架构中,任一达到服务器所限时这些通常都会成为一个麻烦。
测量 PHP 内部的 CPU 使用率是难以实现的。如果你确实关注这一块,可用考虑在 Ubuntu 或 macOS 中使用类似于 top 的命令。对于 Windows,则可用考虑使用 Linux 子系统,这样你就能够在 Ubuntu 中使用 top 命令了。
在本教程中,我们将测量内存使用情况。我们将看一下 “传统” 脚本会使用多少内存。我们也会实现一些优化策略并对它们进行度量。

