欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

php 队列类 消息队列 thinkphp 队列 php队列处理高并

程序员文章站 2022-04-04 19:29:43
...
/** 
 * PHP Class for queue 
 * @author yangqijun@live.cn 
 * @copyright DataFrog Beijingbei  Ltd. 2011-07-25 
 */classQueue {public$length=12;          //默认队列,相当于初始化队列public$queue  = array();  //  if String like this "22,23,24"    convert to array to do queue  public$delimiter=',';  

    function__construct($queue=array())    {$this->queue=$queue;
    }  
    /** 
     * @desc start queue 
     * @param String  $param  new queue element 
     */publicfunctionrun($param)    {if(!is_array($this->queue)){  
            $this->strToQue();//将数组视为队列 
        }  
        $currentlength=$this->countqueue();        //Count  the  queue lengthecho$currentlength;
        echo$this->length.'
'
; if($currentlength$this
->length&&$this->length>0) { $this->queAdd($param); }elseif($this->length==0) //如果为空队列,则将队列初始化为输入的队列 { $param=empty($param)?0:$param; $this->queue[]=$param; } else { for ($i=0;$i$currentlength
-$this->length-1;$i++)//队列比规定的队列多,要删掉队首的元素,才能入队 { $this->queRemove(); } $this->queAdd($param); } return$this->queue; } /** * String like this "22,23,24" convert to array to do queue * @param String $string * @param String $delimiter */publicfunctionstrToQue(){if (empty($this->queue)) { $this->queue=array(); } else { $this->queue=explode($this->delimiter,$this->queue); } } /** * insert $node into queue * @param string $node */privatefunctionqueAdd($node){ array_push($this->queue,$node); $this->countqueue(); } privatefunctionqueRemove(){$node = array_shift($this->queue); $this->countqueue(); return$node; } privatefunctioncountqueue(){$currentlength= count($this->queue); return$currentlength; } function__destruct() {unset($this->queue); } } //example $str='88|89|90|56|23|45|69|23|20|100'; $obj=new Queue ($str); $obj->length=8; // 队列元素长度 $obj->delimiter='|'; //如果队列是字符串,则元素直接的分隔符为| $a=$obj->run('91'); //要添加到队列中的元素 $a=$obj->run('92'); $a=$obj->run('93'); $a=$obj->run('94'); print_r($a); ?>
相关标签: php 队列