background image

PHP 程序级守护进程的实现与优化概述

本文主要介绍了,PHP 程序级守护进程的实现与优化的使用。供大家参考下
首先需要解释的是什么是守护进程。
守护进程就是在后台一直运行的进程。比如我们启动的 httpd,mysqld 等进程都是常驻内
存内运行的程序。
针对需求进行分析:
需求:有一个常驻队列 messageQueue(假设在 redis 内存中),这个队列会有可能有
请求不定期的往队列中增加元素。同时我们要求在队列中有元素的时候,按照队列顺序将
元素 pop 出来,并进行处理(假设这个处理只是 echo ‘test');
解决方法:
现在假设已经有了两个函数
function oPopMessageQueue(){ …} //获取队列最后一个元素;
function vDealElement($element) { …} 处理元素;
要求写出一个守护程序,完成上面的需求。
程序:
好了,这个程序很容易想到,可以使用 while 循环来做

 

复制代码 代码如下:

while(true)
{
if( $element = oPopMessageQueue())
{
vDealElement($element);

}

考虑 1 : 这个程序如果一直跑的话已经可以满足上面的需求了.
但是考虑到:1 用 php 进程跑有可能会由于各种情况(比如运行时间过长),进程挂了,这
样程序就无法自动重连了.
方法:使用 cron
我们在定时脚本中每 10 分钟起一个进程跑这个程序。
然后设置这个程序的运行时间为 10 分钟,10 分钟后自动取消,于是代码变成

 

复制代码 代码如下:

while(true)
{
if($element = oPopMessageQueue())