如何修复Simple_DOM内存限制致命错误?

时间:2011-04-28 04:41:59

标签: php dom memory loops limit

任何人都有修复Simple_DOM内存问题的运气吗?我搜索了这些论坛,发现只有其他解析引擎的推荐。

我的脚本循环遍历20,000个文件,并从每个文件中提取一个单词。我每次都要调用file_get_html函数。

  • 将其移至其他服务器。结果相同。
  • 将foreach循环更改为while循环。
  • 增加服务器的内存限制。不会起作用。

2 个答案:

答案 0 :(得分:0)

是的,您可以使用ini_set()增加内存,但只有您有权这样做。 我建议你在循环中完成任务时,取消设置包含大量数据的变量。

for($i=0;$i < 30000;$i++){
  $file = file_get_contents($some_path.$i);
  // do something, like write to file

  // unset the variables
  unset($file);
}

当然这只是一个示例,但您可以将其与您的代码相关联,并确保每个请求都像第一次运行您的文件一样。

祝你好运:)

答案 1 :(得分:0)

在我看来,在单次执行过程中处理大量数据的方法存在缺陷。根据我的经验,PHP cli处理并不是真正意味着长时间运行并处理大量数据。这样做需要非常非常仔细的内存管理。扔进一个漏洞的第三方剧本,你就有一个把头撞在桌子上的秘方。

也许不是一次尝试运行所有20k文件,而是一次处理几百个文件,将结果存储在某个中间位置,如MySQL数据库,然后在处理完所有文件后收集结果。