php缓存Memcache的Queue的用法
分享一篇关于php中缓存Memcache的Queue的用法,Memcache是一种缓存技术,可以提升程序的性能减轻服务器的压力,代码如下:
<?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 //开源代码phpfensi测试数据 $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缓存Memcache的Queue的用法 - php类库的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://www.haodehen.cn/did29508