zoukankan      html  css  js  c++  java
  • CI框架 守护进程nohup让PHP以常驻内存的形式执行订阅消息

    项目中的需求:

      在自动更新从youtube获取的频道的时候,同时进行频道节目的自动更新功能。

      由于在其中涉及到很多的关于使用php的curl处理方案。

      数据量很大,我的解决思路我给出了四条解决方案:

      1.分步进行处理

      中间可能涉及到的知识点:redis的订阅发布功能,

      思路:第一步完成->发布给:第二步->第二步完成->第三部,依次类推。。。

      要让php的程序代码一直在内存中进行,只要第一步完成,就会触发php+redis的发布消息事件,

      由于写的接口的功能,一直常驻内存,那么有一个要求是,在第二次,第三次。。。处理的时候,内存的变化,只能是执行前的内存要大于或者等于执行后的内存

      不然,最后的结果是:php分配的内存被消耗完毕,最终导致php的内存溢出。

      使用CI框架处理这种情况,发现在进行批量插入和过滤去重的时候,内存的占用比较高【当然中间是经过一系列的排查的】

      查找关于ci的相关的文档:

      

    很多程序员在使用codeigniter CLI下执行一个大批量数据导入的问题时,会一直出现内存过高的情况,下面对此分析器原因及解决办法。
    
    CI db会将所有的查询sql和和sql执行时间保存下来,对于类似百万级大数据量的导入问题来说,其执行的sql记录都会被保存在内容中,这就占用了大量的内容直至脚本结束。
    
    解决办法:
    当你执行大数量的db操作时,记得设置:
    复制代码 代码如下:
    $this->db->save_queries = FALSE;

      至此,第一种思路就是如此的解决。

       至于其他的思路,由于对于前段后和后端的改动都比较大,这里就暂不做叙述了。

      

    联系我->邮件写信
  • 相关阅读:
    大前端的自动化工厂(1)——Yeoman
    推荐两个漂亮的编程字体
    javascript基础修炼(3)—What's this(下)
    javascript基础修炼(2)——What's this(上)
    javascript基础修炼(1)——一道十面埋伏的原型链面试题
    2018年8月中级前端开发推荐书籍
    React组件方法中为什么要绑定this
    Angularjs进阶笔记(2)-自定义指令中的数据绑定
    Angularjs1.X进阶笔记(1)—两种不同的双向数据绑定
    mysql多表查询
  • 原文地址:https://www.cnblogs.com/bing-yu12/p/6723273.html
Copyright © 2011-2022 走看看