时时商务社区
标题:
ThinkPHP进程计数类Process用法实例详解
[打印本页]
作者:
阿情
时间:
2018-2-14 05:42
本文实例讲述了ThinkPHP进程计数类Process用法。分享给大家供大家参考。具体如下:
项目中有一个需求:由于某一后台任务比较占带宽,所以要限制进程数。花了点时间,写了类,目前版本功能比较简单。
Process.class.php文件如下:
* @license PHP Version 3.0 {@link http://www.php.net/license/3_0.txt}
*/
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:
ROCESS_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:
ROCESS_KEY, null);
else
F(self:
ROCESS_KEY, $list);
}
/**
* __getList
*
* @static
* @access private
* @return void
*/
static private function __getList(){
$list = F(self:
ROCESS_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程序设计有所帮助。
您可能感兴趣的文章:
获取php页面执行时间,数据库读写次数,函数调用次数等(THINKphp)
ThinkPHP使用UTFWry地址库进行IP定位实例
ThinkPHP调用百度翻译类实现在线翻译
ThinkPHP调用common/common.php函数提示错误function undefined的解决方法
ThinkPHP分组下自定义标签库实例
Thinkphp调用Image类生成缩略图的方法
ThinkPHP文件缓存类代码分享
thinkphp实现无限分类(使用递归)
thinkPHP2.1自定义标签库的导入方法详解
thinkphp跨库操作的简单代码实例
thinkPHP自定义类实现方法详解
thinkPHP引入类的方法详解
thinkPHP简单调用函数与类库的方法
欢迎光临 时时商务社区 (http://bbs.4435.cn/)
Powered by Discuz! X3.2