本文实例讲述了ThinkPHP进程计数类Process用法。分享给大家供大家参考。具体如下:
项目中有一个需求:由于某一后台任务比较占带宽,所以要限制进程数。花了点时间,写了类,目前版本功能比较简单。
Process.class.php文件如下:
1, 'lasttime'=>time());
}else{
if((time()-$list[$name]['time']) > 600){
$list[$name]['count'] = 1;
}else{
$list[$name]['count'] += 1;
}
}
self::__setList($list);
}
static public function destory(){
$list = self::__getList();
$name = self::__getName();
if(isset($list[$name])){
if($list[$name]['count'] <= 1){
unset($list[$name]);
}else{
$list[$name]['count'] -= 1;
$list[$name]['lasttime'] = time();
}
self::__setList($list);
}
}
static public function getCount(){
$list = self::__getList();
$name = self::__getName();
return $list[$name]['count'];
}
static public function getMaxnum(){
$name = self::__getName();
return C($name) ? C($name) : self::PROCESS_MAXNUM;
}
static public function getName(){
return self::__getName();
}
static public function isOvertop(){
return (self::getCount() > self::getMaxnum());
}
static public function getLasttime(){
$list = self::__getList();
$name = self::__getName();
return $list[$name]['lasttime'];
}
static public function clear(){
F(self::PROCESS_KEY, null);
}
static private function __setList($list=null){
if(!is_array($list) || empty($list))
F(self::PROCESS_KEY, null);
else
F(self::PROCESS_KEY, $list);
}
static private function __getList(){
$list = F(self::PROCESS_KEY);
if(!is_array($list)) return array();
else return $list;
}
static private function __getName(){
return (defined('GROUP_NAME') ? GROUP_NAME.'_' : '') . MODULE_NAME . '_' . ACTION_NAME;
}
}
?>
调用方法:
希望本文所述对大家基于ThinkPHP框架的php程序设计有所帮助。



