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

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

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);//取出一定數量的數據 

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 翁用力的抽插 | 日韩无砖专区2020在线 | 国产成+人+综合+欧美 亚洲 | 亚洲AV蜜桃永久无码精品红樱桃 | 女八把屁股扒开让男生添 | 91肥熟国产老肥熟在线 | 日韩欧美三级视频 | 日本免费全黄一级裸片视频 | av毛片免费看 | 好姑娘在线视频观看免费 | 麻生希无码 | 免费一级国产生活片 | 波多野结衣52部合集在线观看 | 91免费精品国自产拍在线可以看 | 高跟丝袜人妖sissy露出调教 | 国产精品麻豆免费版 | 国产一区二区三区四区波多野结衣 | 日本三级在线观看免费 | 四虎精品成人免费影视 | xxxxx大片在线观看 | 精品久久香蕉国产线看观看麻豆 | 精品无码一区二区三区中文字幕 | 精品欧美日韩一区二区三区 | 99久久99热久久精品免费看 | 久久精品视频在线看 | 情趣内衣情趣玩具play | 丝瓜秋葵番茄绿巨人在线观看 | 亚欧美色 | 国产成人久视频免费 | 国产欧美一区二区三区久久 | 欧美有码 | 国产亚洲精aa在线观看香蕉 | 美女扒开两腿露出尿口的视频 | 国产欧美日韩不卡一区二区三区 | 美女扒开屁股让我桶免费 | 60岁了天天要小伙子 | 91porn最新网址 | 免费观看a毛片一区二区不卡 | 涩涩屋视频在线观看 | 欧美日韩一区二区综合 | 亚洲欧美成人综合在线 |