phpQuery占用过多内存的解决方法
phpQuery是一个用php实现的类似jQuery的开源项目,可以在服务器端以jQuery的语法形式解析网页元素。 相对于正则或其它方式匹配网页方式,phpQuery使用起来要方便的多。
在使用phpQuery采集网页时,遇到一个问题:在处理大量网页之后,phpQuery占用的内存数量非常惊人(很快就超过了1G),
比如这段代码:
while (true) {
|
phpQuery::newDocumentFile($htmlFile);
|
// 处理网页元素...
|
echo memory_get_usage() . "\n";
|
}
|
谨慎运行上面这段代码,它会很快用光你的内存。
经过查看phpQuery的源代码终于发现了问题所在,phpQuery在每处理一个网页就会产生一个DOMDocumentWrapper 对象,而每个DOMDocumentWrapper 对象会被保存在静态成员$documents中(phpQuery::createDocumentWrapper中),这个变量是一个数组,每解析一个网页数组元素就增加一个。
phpQuery::$documents[$wrapper->id] = $wrapper;
找到问题后,解决就很容易了,每次解析完一个网页,把phpQuery::$documents置空即可。
while (true) {
|
phpQuery::newDocumentFile($htmlFile);
|
// 处理网页元素...
|
phpQuery::$documents = array();
|
echo memory_get_usage() . "\n";
|
}
|
内存占用稳定了。
转载自: http://www.linuxsong.org/2011/01/phpquery-memory-leak/
phpQuery占用过多内存的解决方法相关推荐
- 桌面窗口管理器(dwm.exe)占用高内存的解决方法
前往我的主页以获得更好的阅读体验桌面窗口管理器(dwm.exe)占用高内存的解决方法 - DearXuan的主页https://blog.dearxuan.com/2022/01/14/%E6%A1% ...
- Win10 Antimalware Service Executable占用CPU,内存高解决方法
文章目录 前言 一.原因分析 二.解决方法(最有效) 总结 前言 在Win10系统下,如果某一个进程占用CPU或是内存很高,那么极大的可能就是拖慢系统的速度,从而我们使用电脑会变的非常卡,那么最近有朋 ...
- Linux服务器Cache占用过多内存导致系统内存不足问题的排查解决
Linux服务器Cache占用过多内存导致系统内存不足问题的排查解决 参考文章: (1)Linux服务器Cache占用过多内存导致系统内存不足问题的排查解决 (2)https://www.cnblog ...
- windows7系统内存占用过高的解决方法
电脑的内存空间取决了电脑的运行流畅度,时间一久内存就会爆满导致占用过高这样就会使电脑变得延迟,那么windows7系统内存占用过高怎么办呢?下面就一起来看看windows7系统内存占用过高的解决方法吧 ...
- Linux服务器Cache占用过多内存导致系统内存不足问题的排查解决(续)
Linux服务器Cache占用过多内存导致系统内存不足问题的排查解决(续) 参考文章: (1)Linux服务器Cache占用过多内存导致系统内存不足问题的排查解决(续) (2)https://www. ...
- 荣耀linux版开机内存占用高,win10开机内存占用50怎么办_win10一开机内存就占用过高的解决方法...
win10开机内存占用50怎么办?相信很多用户都遇到过这种情况,但内存占用过高会导致我们使用电脑变得很不流畅,那要怎么解决这一问题呢?下面小编就以win10旗舰版为例,来为大家整理了win10一开机内 ...
- pycharm在C盘创建.pycharm2019.3严重占用内存的解决方法
转载自https://www.cnblogs.com/LuckBelongsToStrugglingMan/p/12689836.html pycharm在C盘创建.pycharm2019.3严重占用 ...
- Linux内存耗尽宕机6,转载:Linux服务器Cache占用过多内存导致系统内存不足最终java应用程序崩溃解决方案...
原文链接: https://blog.csdn.net/u014740338/article/details/66975550 问题描述 Linux内存使用量超过阈值,使得Java应用程序无可用内存, ...
- linux weblogic 内存溢出,weblogic10内存溢出解决方法
在开发过程中经常会遇到weblogic内存溢出问题,用下面的办法解决了. 找到domain/bin下的setDomainEnv.cmd文件,里面可以找到以下四行代码,将值该打一倍,重启服务. set ...
- 联想小新为硬件保留2G内存的解决方法
联想小新为硬件保留2G内存的解决方法 如下图,我们可以看到,系统为硬件保留了2.1G内存,实际可用内存减小 在任务管理器中查看GPU的占用可以看到,保留内存是被核心显卡共享走了,你电脑的集显需要显存, ...
最新文章
- maven package 知识(转载)
- html5 自定义属性data-*
- android平板2018,荣耀平板5和ipad2018哪个值得买 荣耀平板5和ipad2018哪个好
- c#如何实现叫号操作_微信预约排队叫号系统操作指南
- 玩转Linux文件描述符和重定向
- oracle 远程连接超时问题
- 正常的vite创建项目并且安装vue router,vant的代码示例
- 可能促使您决定创建自定义数据绑定控件的一些原因:
- JDK 安装 Java环境变量配置
- EDA技术实用教程VHDL篇--名词释义
- 关于BT.709标准
- 数学建模竞赛最全竞赛案例分析总结
- matlab计算星期,在matlab中计算周数
- 【成神之路】Nuxt入门
- dell-inspiron 14r笔记本电脑除尘总结
- 冰山理论(理解笔记)
- Php扫码签到功能怎么实现,python扫码签到程序python中如何定义类
- 智能对话 | 使用 Java实现 智能对话机器人
- 小波神经网络(时间序列预测)
- CCR炒币机器人:量化策略炒币机器人成新一代网红
热门文章
- ie11加载项启用不了 java,IE11网页加载项和控件不能运行怎么办
- 非线性动力学中的同步,同步有哪几类?
- 谷歌金山词霸合作版下载
- Idea翻译插件google翻译失败超时
- Picasso 源码解读
- java 输出 new date,new Date() 方法到底是获取什么时间
- 无线通信设备安装工程概预算编制_祁东设备安装工程施工承包-设计安装_天霖工程...
- Unity3d如何制作声音开关按钮
- java中前加加++和后加加++的详解
- 【计算机组成原理】Verilog语言编写32位并行加法器的理解