0

我有一个 PHP Web 脚本,它接受用户输入的正则表达式并使用它来搜索一个大文本文件(940 万行,大约 160MB)。在我的脚本的第一次迭代中,我将文件放在常规文件系统上,当我需要搜索它时,我会使用 fopen / fgets 访问它并逐行搜索它。根据正则表达式的复杂性,脚本在 30-45 秒内完成了整个文件。

为了加快速度,我安装了一个 1GB 的 tmpfs 分区并将大文本文件移到它上面。然后我更改了 PHP 脚本中的路径,并希望看到立即改进。但是,脚本解析文件的速度并没有改变,并且在多次运行时,有时看起来比从常规文件系统读取文件时要慢。

此外,我尝试在 PHP 中将整个文件加载到 RAM 中,但先将其拉入数组,这确实将搜索时间提高了 40% 左右。不幸的是,这对我来说不是一种可接受的方式,因为初始加载文件到数组的时间很长。

这一切都发生在具有 12GB RAM、运行 Debian 7、nginx / php5-fpm 的虚拟服务器上。

我的 tmpfs 发生了什么?有什么我想念的吗?我会提供任何必要的额外信息。

4

0 回答 0