• 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;

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

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

      

    联系我->邮件写信
  • 相关阅读:
    【BZOJ4444】国旗计划
    NOIp模拟赛三十一
    [arc086e]snuke line
    NOIp模拟赛三十
    [agc004f]namori
    [agc004d]salvage robot
    [agc016b]colorful hats
    NOIp模拟赛二十九
    [arc082f]sandglass
    Oracle性能报告--ASH
  • 原文地址:https://www.cnblogs.com/bing-yu12/p/6723273.html
Copyright © 2020-2023  润新知