应用 我希望发布一个Web应用程序,它接受输入字符串,在大约5,000个纯文本文件中搜索字符串,并返回带有匹配项的文件名。每个文本文件大约4MB(未压缩)。
问题:
在PHP中,我可以使用exec(grep -l pattern dir/* )
来完成工作。但是,出于成本原因,我会选择共享网络托管计划,该计划通常不允许执行程序。
您能为网络环境建议grep的替代方法吗?
到目前为止我理解了以下内容:
任何grep-alternative(例如sift)的二进制程序文件都可以工作。但是,在共享服务器上执行的问题仍然存在。
考虑到大量文件及其大小,PHP函数preg_match
是不合适的。
我愿意在其他语言中实现类似grep的函数(例如perl或javascript)。但是,我不确定性能是否与grep相当,以及执行问题是否仍然存在。
我曾尝试寻找不同的网络托管服务提供商,并了解虚拟专用服务器(VPS)可能是解决方案。但是,我遇到的所有托管服务提供商的VPS计划的价格是无法承受的。
针对此问题的任何解决方案或指导?
答案 0 :(得分:0)
可能的解决方案取决于您的托管服务提供商提供的内容和预算。 你有可用的RDBMS吗?然后,您可以使用许多优惠的全文搜索。如果没有,你可以使用SQLite,它具有全文搜索支持。
如果您必须坚持使用低技术解决方案,那么右侧链接的PHP解决方案可能对您有用。
Perl有一个File::Find模块,您可以使用它。