QueryList destruct()


  • 用法
    释放资源,销毁内存占用。在涉及到循环采集大量网页的场景下,这个方法是很有用的。

注意:此方法并不是销毁QueryList对象,只是销毁phpQuery Document占用的内存,所以调用此方法后,原先设置过HTML的QueryList对象都会丢失设置的HTML,需要重新调用html或者get方法设置HTML.


用法


  • 基础用法
  1. $html = file_get_contents('https://querylist.cc/');
  2. $ql = QueryList::html($html);
  3. $ql->destruct();
  4. // 报错
  5. $ql->find('a');
  6. // 需要重新设置html
  7. $ql->html($html);
  8. // 成功
  9. $ql->find('a');
  • 实际使用场景
  1. // 待采集的链接集合
  2. $urls = [
  3. 'https://querylist.cc/1.html',
  4. 'https://querylist.cc/2.html',
  5. 'https://querylist.cc/3.html',
  6. //...
  7. ];
  8. // 设置采集规则
  9. $ql = QueryList::rule([
  10. 'title' => ['h1','text'],
  11. 'link' => ['a','href']
  12. ]);
  13. foreach($urls as $url){
  14. // 每条链接都会应用上面设置好的采集规则
  15. $data = $ql->get($url)->query()->getData();
  16. // 释放Document内存占用
  17. $ql->destruct();
  18. // ...
  19. }