一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - 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);//取出一定數量的數據 

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 91日本| 久久99r66热这里有精品 | 嫩草视频在线观看免费 | 91精品国产综合久久 | 蜜桃影像传媒破解版 | 男人j进女屁股视频在线观看 | 女子校生下媚药在线观看 | 亚洲 日本 天堂 国产 在线 | 手机跑分排行最新排名 | 国产成人亚洲影视在线 | 精品区2区3区4区产品乱码9 | 久九九精品免费视频 | 暖暖日本在线观看免费 | 国产精品一级视频 | 草莓秋葵菠萝蜜绿巨人污 | 人人爽人人射 | 农村妇女野战bbxxx | 91混血大战上海双胞胎 | 岛国在线播放v片免费 | 免费一级毛片在线播放 | 国产午夜成人无码免费看 | 污到你怀疑人生 | 91麻豆精品国产91久久久 | 九九九久久久 | 校园春色偷拍自拍 | 国产精彩对白综合视频 | 美女黄金大片视频免费看 | 日本视频高清免费观看xxx | 色综合久久丁香婷婷 | 视频在线观看高清免费看 | 91精品啪在线观看国产线免费 | 日产国产精品亚洲系列 | 日本在线视频播放 | 国产香蕉一区二区精品视频 | 国产91精品久久久久久 | 日本黄色高清视频网站 | 欧美国产日韩在线 | 色老板在线视频观看 | 韩国三级视频网站 | 特黄特色大片免费视频播放 | 亚洲首页国产精品丝袜 |