php如何能处理大量的信息?

来源:百度知道 编辑:UC知道 时间:2024/05/29 05:32:05
因为网站的需要,我需要用PHP来写一个抓取网上页面并且分析的程序。分析这部分用一个java的组件来搞,没有PHP的事儿。但抓取包括对每一条分析结果的处理都需要用PHP来做。

现在我遇到的问题就是效率太低。肯定有我算法写的不好的原因,先排除这个,我想问一下PHP是否适合干这件事儿?在PHP的基础上,有没有什么好的解决方法?多谢!

楼上等于没回答

处理大量的信息,这要看信息由多少,操作有多频繁,具体要做什么处理,我理解的是你抓取过来分析完以后肯定要做入库处理。所以问题就出在这,如果大批量的入库操作同时进行,会使mysql库跑死,会出现类似于mysql server has gong away的错误。不过一般的抓取只要分好表,数据内容部是太大应该不会有问题。所以解决这个问题,能想到的办法就是把内容用strip_tags格式化处理,最好不要保留html内容,如果实在用也要把html语言格式化一下,同时,最好执行批量插入,就是不要每条去连一次表,可以设定一次插入100条数据,例子:
insert into table () values (一行记录),(另一行记录),(等等),(等等)...
或者实行分表,把内容放到不同的表中。

至于抓取,php是没有任何问题的,如果是你抓取下来直接入库然后在分析或者直接分析的话建议用file_get_contents();
如果抓成文件再处理的话当然是wget更好一些。

但是大批量抓取还是不建议用php

php是适合做这种事的,不过不是在web模式下,需要在命令行模式下。
具体请看参考资料。

抓取时不要用普通的文件处理函数,而是用CURL,SOCKET类库,效率会大为提高,速度和C差不多,但文件处理,包括fread,get_file_content这些函数会很慢