我已经读到"preg_match_all"不是用来解析大文件的,但我需要这样做。我增加了:
pcre.backtrack_limit=1000000000
pcre.recursion_limit=1000000000
我的 PHP memory_limit设置为 5000M,脚本仍然在 0,2 秒内结束,没有任何错误或异常......
唯一的解决方案是将 100M 文件拆分为 100 个小 1M 文件吗?
感谢您的帮助
考虑使用更适合处理大量数据的命令行工具。
grep,sed,awk或其某种组合。
基于您的代码,我建议您这样做:
-
将变量
$data
设置为空字符串 -
将变量
$work
设置为空字符串;读取数据块并将此字符串追加到$data
-
使用正则表达式
#^(.*?)(<tr>'n(?!.*<tr>'n).*)$#
将$data
拆分为$work
和$data
-
查找
$work
中的所有匹配项 -
在数据可用时返回点 #2
-
查找
$data
中的所有匹配项