0

我读过“preg_match_all”不是为解析大文件而设计的,但我需要这样做。我增加了:

pcre.backtrack_limit=1000000000
pcre.recursion_limit=1000000000

我的 PHP memory_limit 设置为 5000M,脚本仍然在 0.2 秒内结束,没有任何错误或异常...

唯一的解决方案是将100M文件分成100个1M小文件吗?

感谢帮助

4

2 回答 2

4

考虑使用更适合处理大量数据的命令行工具。

grep、sed、awk 或它们的某种组合。

于 2012-07-03T17:48:06.287 回答
3

根据您的代码,我建议您这样做:

  1. 将变量设置$data为空字符串

  2. 将变量设置$work为空字符串;读取数据块并将此字符串附加到$data

  3. 使用正则表达式#^(.*?)(<tr>\n(?!.*<tr>\n).*)$#拆分$data$work$data

  4. 查找所有匹配项$work

  5. 在数据可用时返回第 2 点

  6. 查找所有匹配项$data

于 2012-07-03T17:45:18.223 回答