• 2
  • 新人请关照

QueryList 采集一部分之后,会报错phpQuery::newDocumentFile($file) first

好像是文档没有载入。

请教下大家遇到这样的问题是怎样处理的啊??

[Exception]
Document with ID '8291f24461d0e759b6440677585a7ce7' isn't loaded. Use phpQuery::newDocument($html) or phpQuery::newDocumentFile($file) first.

重新执行一次脚本又好了

阅读 1.8k
评论
    3 个回答
    • 454

    此类错误一般是因为脚本中涉及大量的QueryList对象调用,而又没有及时释放资源的内存占用,导致内存溢出引起的,解决方法就是尽量重用同一个QueryList对象并及时释放资源的内存占用:

    • 错误示范
    foreach ($urls as $url) {
        QueryList::get($url)->rule([
          //....
        ])->query()->getData();
    }
    • 正确做法
    $ql = QueryList::rule([
          //....
        ]);
    foreach ($urls as $url) {
        $ql->get($url)->query()->getData();
        // 释放资源,销毁内存占用
        $ql->destruct();
    }
      • 1
      • 新人请关照
        • 0
        • 新人请关照

        呵呵,这个querylist,你会发现,即使你已经给每个地方都$ql->destruct();依然会报这个错误。无解

        该答案已被忽略,原因:

          撰写回答

          登录后参与交流、获取后续更新提醒