项目中的需求:

  在自动更新从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;

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

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

  

转载于:https://www.cnblogs.com/bing-yu12/p/6723273.html

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

  1. 守护进程nohup的用法

    使./a.out后台运行 nohup ./a.out & exit // 如果你使用的bash客户端或者是screen窗口,直接关闭窗口那么该进程也会终止,所以要用exit 关于nohup重定 ...

  2. < Linux > 守护进程

    目录 1.守护进程 守护进程的概念 进程组和会话 2.守护进程化的方式 TCP网络程序(守护进程化) TCP网络程序(守护进程化)gitee地址 daemon创建守护进程 nohup命令 1.守护进程 ...

  3. day 34 守护线程守护进程 互斥锁线程 信号量 生产者消费者

    今日内容 1.守护进程vs 守护线程(*) 2.互斥锁(**) 3.信号量(**) 4.生产者消费者模型(*****) 5.GIL(什么时候用进程,什么时候用线程)(*****) 一.守护进程和守护线 ...

  4. 带你认识Flink容错机制的两大方面:作业执行和守护进程

    摘要:Flink 容错机制主要有作业执行的容错以及守护进程的容错两方面,前者包括 Flink runtime 的 ExecutionGraph 和Execution的容错,后者则包括 JobManag ...

  5. Linux守护进程编写

    Linux守护进程编写 环境:VMware 15 + ubuntu 16 内核:4.19 护进程的特点 后台服务程序,随系统启动而启动. 很多系统服务通过守护进程完成. 守护进程的名字往往以字母'd' ...

  6. [转]Mac OS守护进程(服务)列表及优化建议

    /sbin/launchd 系统及用户进程管理器,它是内核装载成功后在OS环境下启动的第一个进程,是Mac OS最重要的进程之一.你无法禁用它. /usr/libexec/kextd 内核扩展服务,响 ...

  7. 达梦数据库-初探监视器服务与守护进程服务

    在深入了解达梦数据库后,我们会知道监视器服务和守护进程服务都是很重要的一部分,它们主要用来监控数据库状态,并在异常情况下进行故障处理. 以下我们对这两个服务进行一些测试,来了解它们的工作特性. 首先搭 ...

  8. 创建一个简单的守护进程

    下面的内容是看了书上总结来的. 要写这样的一个程序看似复杂,但是它也是遵循一定的规则的.书中的方法介绍了用五个步骤来创建一个简单的守护进程. 1.创建子进程,父进程退出 由于守护进程是在后台运行,脱离 ...

  9. Android进程保活(常驻内存)

    Android将进程分为6个等级,它们按优先级顺序由高到低依次是:  1.前台进程( FOREGROUND_APP):  2.可视进程(VISIBLE_APP ):  3. 次要服务进程(SECOND ...

最新文章

  1. ld-linux-x86-64.so.2+,RedHat6安装Oracle数据库遇到错误 C [ld-linux-x86-64.so.2+0x14d70]
  2. 非常好!!!Linux源代码阅读——环境准备【转】
  3. ConstraintLayout 不能作为activity的根节点,否则fragment显示不出来
  4. compareHist函数
  5. 科普丨关灯玩手机,危害到底有多大?如何科学用眼?
  6. Python | 基于参数和返回值的功能分类
  7. php编译成jphp,php编译脚本安装
  8. BUPT复试专题—统计字母(2008)
  9. tbschedule使用
  10. 易语言 实现程序被关闭时隐藏窗口
  11. linux系统如何使用ocr图片文字识别
  12. CHERRY樱桃机械键盘按键
  13. 怎样设定目标(一)目标金字塔
  14. 数理统计 - 圆环上随机取3个点组成一个锐角三角形的概率
  15. Typora配置smms图床
  16. 实现一个div的背景颜色从左到右慢慢出现
  17. 若要运行此应用程序,您必须首先安装,NET Framework的以下版本之一(附链接)
  18. TomCat 启动报:validateJarFile jar not loaded. See Servlet Spec 2.3, section 9.7.2.
  19. reflow (回流)和 repaint(重绘)理解
  20. 多思计算机组成原理实验一:全加器实验

热门文章

  1. 学习笔记:文本过滤_____unix 下的通配符
  2. php 隐式路由,关于Laravel 7 的简单隐式路由模型绑定
  3. ai钢笔工具怎么描线_AI钢笔工具技巧,怎么画出完美的贝塞尔曲线
  4. mysql50到例题_关于MySQL的经典例题50道 答案参考
  5. mybatis 依赖于jdbc_Mybatis和JDBC区别
  6. 远程过程调用失败0x800706be_WordPress5.0 远程代码执行分析
  7. Arthas 初探--安装初步适用
  8. php读写分离数据不能同步,thinkphp 下数据库读写分离代码剖析
  9. 实验Matlab数值运算,MATLAB数值实验一(数据的插值运算及其应用完整版
  10. Postman导入和导出接口