CI框架 守护进程nohup让PHP以常驻内存的形式执行订阅消息

项目中的需求:php

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

  因为在其中涉及到不少的关于使用php的curl处理方案。redis

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

  1.分步进行处理后端

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

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

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

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

  否则,最后的结果是:php分配的内存被消耗完毕,最终致使php的内存溢出。this

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

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

  

不少程序员在使用codeigniter CLI下执行一个大批量数据导入的问题时,会一直出现内存太高的状况,下面对此分析器缘由及解决办法。

CI db会将全部的查询sql和和sql执行时间保存下来,对于相似百万级大数据量的导入问题来讲,其执行的sql记录都会被保存在内容中,这就占用了大量的内容直至脚本结束。

解决办法:
当你执行大数量的db操做时,记得设置:
复制代码 代码以下:
$this->db->save_queries = FALSE;

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

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

相关文章
相关标签/搜索