服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服务器之家 - 编程语言 - PHP教程 - 用PHP写的基于Memcache的Queue实现代码

用PHP写的基于Memcache的Queue实现代码

2019-12-18 17:07PHP教程网 PHP教程

用PHP写的基于Memcache的Queue实现代码,需要的朋友可以参考下。

php类代码: 

复制代码代码如下:


<?php 
class MQ{ 
public static $client; 
private static $m_real; 
private static $m_front; 
private static $m_data = array(); 
const QUEUE_MAX_NUM = 100000000; 
const QUEUE_FRONT_KEY = '_queue_item_front'; 
const QUEUE_REAL_KEY = '_queue_item_real'; 
public static function setupMq($conf) { 
self::$client = memcache_pconnect($conf); 
self::$m_real = memcache_get(self::$client, self::QUEUE_REAL_KEY); 
self::$m_front = memcache_get(self::$client, self::QUEUE_FRONT_KEY); 
if (!isset(self::$m_real) || emptyempty(self::$m_real)) { 
self::$real= 0; 

if (!isset(self::$m_front) || emptyempty(self::$m_front)) { 
self::$m_front = 0; 

return self::$client; 

public static function add($queue, $data) { 
$result = false; 
if (self::$m_real < self::QUEUE_MAX_NUM) { 
if (memcache_add(self::$client, $queue.self::$m_real, $data)) { 
self::mqRealChange(); 
$result = true; 


return $result; 

public static function get($key, $count) { 
$num = 0; 
for ($i=self::$m_front;$i<self::$m_front + $count;$i++) { 
if ($dataTmp = memcache_get(self::$client, $key.$i)) { 
self::$m_data[] = $dataTmp; 
memcache_delete(self::$client, $key.$i); 
$num++; 


if ($num>0) { 
self::mqFrontChange($num); 

return self::$m_data; 

private static function mqRealChange() { 
memcache_add(self::$client, self::QUEUE_REAL_KEY, 0); 
self::$m_real = memcache_increment(self::$client, self::QUEUE_REAL_KEY, 1); 

private static function mqFrontChange($num) { 
memcache_add(self::$client, self::QUEUE_FRONT_KEY, 0); 
self::$m_front = memcache_increment(self::$client, self::QUEUE_FRONT_KEY, $num); 

public static function mflush($memcache_obj) { 
memcache_flush($memcache_obj); 

public static function Debug() { 
echo 'real:'.self::$m_real."<br>/r/n"; 
echo 'front:'.self::$m_front."<br>/r/n"; 
echo 'wait for process data:'.intval(self::$m_real - self::$m_front); 
echo "<br>/r/n"; 
echo '<pre>'; 
print_r(self::$m_data); 
echo '<pre>'; 


define('FLUSH_MQ',0);//CLEAN ALL DATA 
define('IS_ADD',0);//SET DATA 
$mobj = MQ::setupMq('127.0.0.1','11211'); 
if (FLUSH_MQ) { 
MQ::mflush($mobj); 
} else { 
if (IS_ADD) { 
MQ::add('user_sync', '1test'); 
MQ::add('user_sync', '2test'); 
MQ::add('user_sync', '3test'); 
MQ::add('user_sync', '4test'); 
MQ::add('user_sync', '5test'); 
MQ::add('user_sync', '6test'); 
} else { 
MQ::get('user_sync', 10); 


MQ::Debug(); 
?> 


使用方法 

复制代码代码如下:


MQ::setupMq('127.0.0.1','11211');//连接 
MQ::add($key, $value);//添加数据到队列 
MQ::add($key, $value);//添加数据到队列 
MQ::add($key, $value);//添加数据到队列 
MQ::add($key, $value);//添加数据到队列 
MQ::add($key, $value);//添加数据到队列 
MQ::add($key, $value);//添加数据到队列 
MQ:get($key, 10);//取出一定数量的数据 

延伸 · 阅读

精彩推荐
  • PHP教程PHP XML Expat解析器知识点总结

    PHP XML Expat解析器知识点总结

    在本文里我们给大家整理了关于PHP XML Expat解析器的相关知识点内容,需要的朋友们学习下这个吧。...

    laozhang4792019-06-14
  • PHP教程PHP数组实例总结与说明

    PHP数组实例总结与说明

    PHP中共有超过30个新的数组相关函数,其中很多通用函数允许您检查给定数组中是否存在特定对象、对数组元素计数、增加或删除元素,或对元素排序。 ...

    PHP教程网2732019-12-11
  • PHP教程PHP array_shift()用法实例分析

    PHP array_shift()用法实例分析

    这篇文章主要介绍了PHP array_shift()用法,结合实例形式分析了array_shift()的功能、使用方法、相关问题与解决方法,需要的朋友可以参考下...

    徐三少北2612019-07-07
  • PHP教程PHP+MySQL使用mysql_num_rows实现模糊查询图书信息功能

    PHP+MySQL使用mysql_num_rows实现模糊查询图书信息功能

    这篇文章主要介绍了PHP+MySQL使用mysql_num_rows实现模糊查询图书信息功能,涉及php使用mysql的like查询语句进行模糊查询以及mysql_num_rows进行结构统计的相关操作...

    chengqiuming3672019-09-29
  • PHP教程php whois查询API制作方法

    php whois查询API制作方法

    网站们经常需要查询网站whois信息,这里介绍一个使用php制作的whois api接口,方法也很简单,下面详细介绍一下。 ...

    PHP教程网3542019-12-01
  • PHP教程七种常用的PHP程序开发工具

    七种常用的PHP程序开发工具

    互联网的流行使得,软件程序发的需求也越来越大,其中PHP程序开发就是一个先例。PHP是英文超级文本预处理语言Hypertext Preprocessor的缩写。PHP 是一种 HTM...

    寒龙亦3922019-06-03
  • PHP教程PHP实现十进制数字与二十六进制字母串相互转换操作示例

    PHP实现十进制数字与二十六进制字母串相互转换操作示例

    这篇文章主要介绍了PHP实现十进制数字与二十六进制字母串相互转换操作,涉及php字符串遍历、转换相关操作技巧,需要的朋友可以参考下 ...

    flynetcn4572019-09-12
  • PHP教程懒惰是金 介绍几个php通用的函数

    懒惰是金 介绍几个php通用的函数

    PHP是一门高效的网络编程语言,由于它具有编写灵活、运行快速等优点,迅速成为Web程序员的首选语言。前不久的一份权威调查表明,现在已经有31.6%的网...

    php教程网4762019-10-29