php cli 中的使用curl 内存溢出时的正确处理办法

最近在用PHP CLI 开发了爬虫 , 因为CURL可以同时请求多个数据,特别方便和快速 , 一天下来收集了 20多W条的有效URL,然后不停的下载各种文章 ,图片 , 图片半天下集了大概 2个G这样子 。 

原理是这样子的,首先,通过首页入口,取得所有各个栏目的有效入口的URL,记录在MYSQL数据库,做个标识,爬取过的标识为1,这样,在PHP 中 通过 call_user_func  不停地爬取 , 就可以取得完整的数据了 。

在爬取过程中会碰到各种问题 ,其中最 难搞的 是 CURL每运行一次占的内存会逐渐增大 , 到最后 内存溢出,系统崩溃 ,各种度娘后都没有找到合适的,有的话通过修改php.ini中的内存设计,方法有点作用,运行的时间会长一点,但到最后还是会崩溃。不能从根本上解决问题,治标不治本 。可以通过 memory_get_usage 查看内存的使用情况。

后来通过多次的测试 , 终于解决了 : 原理 是  计算 爬取的次数 ,当超过时用 exit ,退出运行 ,这时内存会清空 , 然后能过PHP 运行bat文件 ,bat文件里面 是执行 爬虫 的方法,相当于 重启爬虫 ,  记得 在exit前 用system 函数 运行bat文件,如果用 exec是没效果 的,还有就是 bat文件里面 要 等待 几秒的时间后再执行 。

关键代码如下:

 

 

 

 

 bat文件的代码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值