【问题标题】:How to fix Simple_DOM memory limit fatal error?如何修复 Simple_DOM 内存限制致命错误?
【发布时间】:2011-04-28 04:41:58
【问题描述】:

任何人在解决 Simple_DOM 内存问题方面有好运吗?我搜索了这些论坛,只发现了对其他解析引擎的推荐。

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

  • 已将其移至其他服务器。结果相同。
  • 将 foreach 循环更改为 while 循环。
  • 增加内存限制,任一服务器。行不通。

【问题讨论】:

    标签: php dom memory loops limit


    【解决方案1】:

    是的,您可以使用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);
    }
    

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

    祝你好运:)

    【讨论】:

      【解决方案2】:

      在我看来,在单次执行期间处理大量数据的方法存在缺陷。以我的经验,PHP cli 处理并不是真的要长时间运行并处理大量数据。这样做需要非常非常仔细的内存管理。加入一个泄漏的第 3 方脚本,你就有了用头撞桌子的秘诀。

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

      【讨论】:

      • 是的,这就是我最终这样做的方式 - 此外,在解析 web url 时禁用图像似乎有所帮助。
      猜你喜欢
      • 1970-01-01
      • 2011-01-27
      • 2019-08-31
      • 2020-08-13
      • 2023-03-12
      • 2021-03-11
      • 2010-12-31
      • 2012-09-22
      • 1970-01-01
      相关资源
      最近更新 更多