检查PHP中许多小文件的内容

时间:2018-09-18 21:50:54

标签: php

我有一个不寻常的问题。使用PHP脚本,我必须遍历一个包含约100万个小型文本文件(大小范围为1KB至1MB)的文件夹,并仅选择在特定间隔内且包含特定搜索字符串的内容中带有ctime的那些文本。

第一部分(选择创建时间在一定范围内的文件)是我使用readdir管理的,但是检查文件内容中的搜索字符串被证明是一个挑战。使用file_get_contents(然后使用stripos)根本不会。它很慢,它使我的PHP脚本崩溃了。

我肯定不是第一个遇到这种问题的人,但我不是PHP开发人员。该代码是从以前的开发人员继承的。我不确定应该使用哪种替代方案,以及什么代码可以节省服务器RAM和CPU。

2 个答案:

答案 0 :(得分:3)

我会尝试将shell_execfindgrep结合使用:

$output = shell_exec("find . -type f -ctime $MyCtime -exec grep -H -m 1 $MySearchString {} +;");

-H以显示文件名

-m 1在文件中首次出现时停止搜索

答案 1 :(得分:2)

PHP无法轻松处理它(这将花费大量时间+会使CPU过载),请考虑使用bash和正则表达式来解决问题

简而言之,PHP在这种情况下不是正确的工具