我有这样一些文件,内容类似这样
[00:00:18][122.11.56.52][bbs] 联想电脑hei
[00:00:18][61.149.193.103][bbs] 17
[00:00:18][122.11.56.52][bbs] 联想电脑hei
[00:00:18][122.11.56.52][product] 联想电脑hei
[00:00:19][122.11.56.52][product] 联想电脑hei
现在要做的是计算关键词出现的次数,以上边的为例:bbs下的关键词 联想电脑hei 出现了两次,product下的关键词 联想电脑hei 也出现了两次,bbs下的关键词 17 出现了一次,就是类似这样的计算现在的问题是如果读取一个3M左右的文件是没有问题,读再大一点的文件就会出这样错误:
Fatal error: Allowed memory size of 25165824 bytes exhausted (tried to allocate 524288 bytes) in...
查询资料,解决办法是把memory_limit设置的大一点,确实解决了问题但我现在想问的是除了这种方法之外还有没有其他的办法?那种办法毕竟有点消耗内存
求解当中
[00:00:18][122.11.56.52][bbs] 联想电脑hei
[00:00:18][61.149.193.103][bbs] 17
[00:00:18][122.11.56.52][bbs] 联想电脑hei
[00:00:18][122.11.56.52][product] 联想电脑hei
[00:00:19][122.11.56.52][product] 联想电脑hei
现在要做的是计算关键词出现的次数,以上边的为例:bbs下的关键词 联想电脑hei 出现了两次,product下的关键词 联想电脑hei 也出现了两次,bbs下的关键词 17 出现了一次,就是类似这样的计算现在的问题是如果读取一个3M左右的文件是没有问题,读再大一点的文件就会出这样错误:
Fatal error: Allowed memory size of 25165824 bytes exhausted (tried to allocate 524288 bytes) in...
查询资料,解决办法是把memory_limit设置的大一点,确实解决了问题但我现在想问的是除了这种方法之外还有没有其他的办法?那种办法毕竟有点消耗内存
求解当中
while($buf = fgets($fp)) {
preg_replace("/\[(\w+)\] (.+)/e", '$cnt["$1"]["$2"]++', trim($buf));
}当然,如果分类太多,还是会造成内存溢出的。这就要借助数据库了