纯php实现大文件全文搜索

2011-12-26 04:23:54 +08:00
 Tianpu
一直想做的其实是日志分析 接着密码泄漏的东风 终于有兴趣花了点时间做出来 我这边上传超慢 现在才只有csdn的数据可以分析 不输出行号的情况下 全文匹配 1.8s 环境是128M内存的buyvm的VPS

差不多耗费40M左右的内存 我觉得挺满意的 代码写的比较难看 主要是利用fseek函数

心得:
1、explode可能很慢 str_replace也是 正则匹配还行 但是也有可能很慢
2、一次读少量数据 然后while读取比一次读大量数据要快一个数量级 出了磁盘IO外 主要是正则匹配随着数据量是指数递减的

没有输出行号 不够好看 哎 行号要匹配一次 又是一次系统开销 希望vibbow分享下他的体会 怎么就那么快呢

如果做成多线程的 一次查询用6个左右的进程 我觉得有可能达到vibbow的速度 不过行号还是没法解决
6313 次点击
所在节点    PHP
29 条回复
Tianpu
2011-12-26 10:45:23 +08:00
我只是测试下php读取大文件的能力 实际结果非常满意 因此可以利用php做更多的事情了

我这边测试出来的是一次少量读取 迅速处理 然后PHP是具备处理大文件能力的 还有就是资源的节省很重要

感谢热心的vibbow 感谢所有参与本帖的人
alsotang
2011-12-27 01:51:16 +08:00
这就开始感谢了?.....我还要冒个泡....
以后发代码可以发github的gist,这样indent和highlight都方便。具体可以在V2EX搜一下方法,贴个gist地址就行。
vibbow
2011-12-29 03:37:37 +08:00
http://vsean.net/blog/post/98
我的全文搜索代码整理完成。
kojp
2011-12-29 14:34:03 +08:00
我也感谢大家~~~~ (以没有看到这个帖子,还特意开了一个帖子)
vibbow
2011-12-30 08:03:13 +08:00
又改进了一遍代码,现在瓶颈在硬盘了。
10G数据,170秒全文搜完。
lyxint
2011-12-30 08:30:00 +08:00
预先生成索引啊
vibbow
2011-12-30 08:47:09 +08:00
@lyxint 近10G的数据,生成个全文索引没个一两天应该完不成吧...
delectate
2011-12-30 08:49:13 +08:00
10,000/170=58,硬盘了。
lyxint
2011-12-30 10:21:49 +08:00
@vibbow 不会, 10G数据量很小

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/24333

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX