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

新手上路,请多包涵

好像是文档没有载入。

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

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

重新执行一次脚本又好了

阅读 5.4k
3 个回答

此类错误一般是因为脚本中涉及大量的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();
}
新手上路,请多包涵
推荐问题