QueryList 如何释放资源内存占用
发布于 作者:苏南大叔 来源:程序如此灵动~ 我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...
苏南大叔继续和大家聊QueryList
的相关话题,本文说的是内存销毁的问题。其实说起来,很多语言对内存销毁的都没有强制的要求了,所以,大多数时候,在代码中,就很难看到destruct()
的相关字样了。但是,QueryList
由于其应用场景的问题,也许真的需要主动释放资源,销毁内存占用。
QueryList destruct()
释放内存占用
释放资源,销毁内存占用。在涉及到循环采集大量网页的场景下,这个方法是很有用的。
注意:此方法并不是销毁QueryList
对象,只是销毁phpQuery Document
占用的内存,所以调用此方法后,原先设置过HTML
的QueryList
对象都会丢失设置的HTML
,需要重新调用html
或者get
方法设置HTML
.
$ql->destruct();
QueryList destruct()
用法
- 基础用法
$html = file_get_contents('https://querylist.cc/');
$ql = QueryList::html($html);
$ql->destruct();
// 报错
$ql->find('a');
// 需要重新设置html
$ql->html($html);
// 成功
$ql->find('a');
- 实际使用场景
// 待采集的链接集合
$urls = [
'https://querylist.cc/1.html',
'https://querylist.cc/2.html',
'https://querylist.cc/3.html',
//...
];
// 设置采集规则
$ql = QueryList::rule([
'title' => ['h1','text'],
'link' => ['a','href']
]);
foreach($urls as $url){
// 每条链接都会应用上面设置好的采集规则
$data = $ql->get($url)->query()->getData();
// 释放Document内存占用
$ql->destruct();
// ...
}
如果大量查询抓取的时候,就需要使用这个destruct()
方法,来释放内存了。
总结
总结一下来说,这个destruct()
代码也不是必须用的,使用的时候,都是由特殊上下文的。不用的话,一般来说,问题也不会太大。不过,对程序严加要求的话,就应该注意这个问题。
好,请大家继续关注苏南大叔带来的 querylist
的更多经验文字,谢谢。
如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。