这篇文章主要介绍了thinkphp进程计数类process用法,以实例形式较为详细的分析了process类的定义及进程计数的实现技巧,具有一定参考借鉴价值,需要的朋友可以参考
本文实例讲述了thinkphp进程计数类process用法。分享给大家供大家参考。具体如下:
项目中有一个需求:由于某一后台任务比较占带宽,所以要限制进程数。花了点时间,,写了类,目前版本功能比较简单。
process.class.php文件如下:
* @license php version 3.0 {@link } */class process{ const process_key = '~process'; const process_maxnum = 10; /*** start** @static* @access public* @return void*/ static public function start(){$list = self::__getlist();$name = self::__getname();if(!isset($list[$name])){$list[$name] = array('count'=>1, 'lasttime'=>time());}else{if((time()-$list[$name]['time']) > 600){$list[$name]['count'] = 1;}else{$list[$name]['count'] += 1;}}self::__setlist($list); } /*** destory** @static* @access public* @return void*/ static public function destory(){$list = self::__getlist();$name = self::__getname();if(isset($list[$name])){if($list[$name]['count'] self::getmaxnum()); } /*** getlasttime** @static* @access public* @return void*/ static public function getlasttime(){$list = self::__getlist();$name = self::__getname();return $list[$name]['lasttime']; } /*** clear** @static* @access public* @return void*/ static public function clear(){f(self::process_key, null); } /*** __setlist** @param mixed $list* @static* @access private* @return void*/ static private function __setlist($list=null){if(!is_array($list) || empty($list))f(self::process_key, null);elsef(self::process_key, $list); } /*** __getlist** @static* @access private* @return void*/ static private function __getlist(){$list = f(self::process_key);if(!is_array($list)) return array();else return $list; } /*** __getname** @static* @access private* @return void*/ static private function __getname(){return (defined('group_name') ? group_name.'_' : '') . module_name . '_' . action_name; }}?>
调用方法:
希望本文所述对大家基于thinkphp框架的php程序设计有所帮助。