搜索
系统检测到您的用户名不符合规范:

基础THINKPHP3.2 + redis实现的消息队列库

浏览:8873 发布日期:2017年04月05日 分类:系统代码 关键字: 消息队列 redis
基于redis实现的消息队列类库,只有简单的几个方法
<?php
/**
* 基本redis手消息队列
* 用法:
* use Com\Queue;
* $queue = Queue::getInstance('msg');
* 加入队列
* $queue->push('aaaaaa');
* $queue->push('bbbbb');
* 获取队列长度
* $queue->len();
* 读取队列
* $value = $queue->pop()
* 删除队列
* $queue->flushQueue();
*/
namespace Com;


class Queue extends \Think\Cache\Driver\Redis
{
static public $timeout = 1;

static public $queueName = 'queue';


/**
* 操作句柄
* @var string
* @access protected
*/
protected $handler;

/**
* 缓存连接参数
* @var integer
* @access protected
*/
protected $options = array();

/**
* 取得缓存类实例
* @static
* @access public
* @return mixed
*/
public static function getInstance($queueName, $options = [])
{
if (C('DATA_CACHE_TYPE') != 'Redis') exit('DATA_CACHE_TYPE DO NOT Support Redis');

//当前队列名称
self::$queueName = $queueName;

static $_instance = array();
if (!isset($_instance[$queueName])) {
$_instance[$queueName] = new Queue();
}
return $_instance[$queueName];

}

//设置队列名称
public static function setQueueName($name)
{
self::$queueName = $name;
}

/**
* 添加队列(lpush)
* @param string $value
* @return int 队列长度
*/
public function push($value)
{
return $this->lPush(self::$queueName, $value);
}

//brpop
/**
* 读取队列
* @return string|nil
*/
public function pop()
{
$result = $this->brPop(self::$queueName, self::$timeout);

return empty($result) ? $result : $result[1];
}

/**
* 删除一个消息队列
*/
public function flushQueue()
{
$this->delete(self::$queueName);
}

/**
* 返回队列长茺
* @return int
*/
public function len()
{
return $this->LLEN(self::$queueName);
}
}

?>
https://github.com/cfanbo/thinkphp-redis-mq
评论() 相关
后面还有条评论,
评论支持使用[code][/code]标签添加代码
您需要登录后才可以评论 登录 | 立即注册
收藏
cfanbo
积分:1495 等级:LV3
热点推荐
(追記) (追記ここまで)
最新更新

我们

合作

网站

信息

ThinkPHP 是一个免费开源的,快速、简单的面向对象的 轻量级PHP开发框架 ,创立于2006年初,遵循Apache2开源协议发布,是为了敏捷WEB应用开发和简化企业应用开发而诞生的。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。并且拥有众多的原创功能和特性,在社区团队的积极参与下,在易用性、扩展性和性能方面不断优化和改进,已经成长为国内最领先和最具影响力的WEB应用开发框架,众多的典型案例确保可以稳定用于商业以及门户级的开发。

AltStyle によって変換されたページ (->オリジナル) /