Heim > php教程 > PHP源码 > PHP队列框架WanQueue/文件/redis队列

PHP队列框架WanQueue/文件/redis队列

PHP中文网
Freigeben: 2016-05-23 08:39:15
Original
1849 Leute haben es durchsucht

PHP队列框架WanQueue/文件队列,可快速切换到reids/mysql等任何队列。开心/方便/简单。

运行 php WanQueue/console/QueueServer.php 开启队列服务

//添加任务到队列
$que=new WanQueue\Queue\Queue();
$que->push(new WanQueue\Jobs\Email('18618300482@163.com','i love wanwan','i love you !'));

使用方法

<?php
 
//自动加载自己写
 
//添加队列任务
$que=new WanQueue\Queue\Queue();
$que->push(new WanQueue\Jobs\Email(&#39;18618300482@163.com&#39;,&#39;i love wanwan&#39;,&#39;i love you !&#39;));
Nach dem Login kopieren

job示例

<?php
namespace WanQueue\Jobs;
/**
 * Created by PhpStorm.
 * User: wanwan
 * Date: 16/2/27
 * Time: 下午3:33
 */
class Email implements Job{
    private $email=&#39;&#39;;
    private $title=&#39;&#39;;
    private $content=&#39;&#39;;
 
    function __construct($email,$title,$content)
    {
        $this->email=$email;
        $this->title=$title;
        $this->content=$content;
 
    }
 
    function handle()
    {
        // TODO: Implement handle() method.
 
        echo &#39;email to :&#39;,$this->email,&#39; theme : &#39;,$this->title ,&#39; send success !&#39;,"\n";
    }
 
}
Nach dem Login kopieren

redis驱动队列

<?php
namespace WanQueue\Queue;
/**
 * Created by PhpStorm.
 * User: wanwan
 * Date: 16/2/24
 * Time: 上午10:33
 */
class Queue{
  
    private $queue=null;
    private $queueName=&#39;&#39;;
  
    /**
     * Queue constructor. 加载队列
     * @param string $queueName  队列名称
     */
     function __construct($queueName=&#39;Queue&#39;)
    {
            $this->queueName=$queueName;
            $this->getRedisQueue();
    }
  
    /**
     * 获取队列---redis版
     */
    private function getRedisQueue(){
  
        if($this->queue==null){
            try {
                $this->queue = new \Redis();
                $this->queue->pconnect(&#39;127.0.0.1&#39;, 6379);
            } catch (Exception $e) {
                file_put_contents(date(&#39;Y-m-d&#39;).&#39;-redis.log&#39;,  date(&#39;Y-m-d H:i:s&#39;).&#39; : &#39;. $e->getMessage(), FILE_APPEND);
            }
        }
    }
  
    /**
     * 获取队列-----文件版
     */
    private function getQueue(){
        $queue=__DIR__."/Queue/{$this->queueName}.queue";
        if(!is_file($queue)){
            return [];
        }
       return json_decode(file_get_contents($queue),true);
    }
  
  
    /**
     * 队列持久化----文件版
     */
    private function setQueue(){
        if(!is_dir(__DIR__."/Queue")){
            mkdir(__DIR__."/Queue");
        }
        file_put_contents(__DIR__."/Queue/{$this->queueName}.queue",json_encode($this->queue));
    }
  
    /**
     * 入队
     * @param $value
     * @return int
     */
    function push($value){
        return $this->queue->rpush($this->queueName,serialize($value));
    }
  
    /**
     * 出队
     * @return mixed
     */
    function pop(){
  
        return unserialize($this->queue->lpop($this->queueName));
    }
  
    /**
     * 从开始入队
     * @param $value
     * @return int
     */
    function prePush($value){
        return $this->queue->lpush($this->queueName,serialize($value));
    }
  
    /**
     * 从末尾出队
     * @return mixed
     */
    function popL(){
        return unserialize($this->queue->rpop($this->queueName));
    }
  
    /**
     * 队列保存
     */
     function __destruct()
    {
        // TODO: Implement __destruct() method.
        //$this->setQueue();
    }
}
Nach dem Login kopieren
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage