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 class="brush:php;toolbar:false">'; print_r(self::$m_data); echo '<pre class="brush:php;toolbar:false">'; } } 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);//取出一定数量的数据
声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前By尊渡假赌尊渡假赌尊渡假赌
刺客信条阴影:贝壳谜语解决方案
1 周前ByDDD
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前By尊渡假赌尊渡假赌尊渡假赌
在哪里可以找到原子中的起重机控制钥匙卡
1 周前ByDDD

热工具

SublimeText3 英文版
推荐:为Win版本,支持代码提示!

螳螂BT
Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

Atom编辑器mac版下载
最流行的的开源编辑器

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)