ThinkPHP進(jìn)程計(jì)數(shù)類Process用法實(shí)例詳解
本文實(shí)例講述了ThinkPHP進(jìn)程計(jì)數(shù)類Process用法。分享給大家供大家參考。具體如下:
項(xiàng)目中有一個(gè)需求:由于某一后臺(tái)任務(wù)比較占帶寬,所以要限制進(jìn)程數(shù)?;它c(diǎn)時(shí)間,寫了類,目前版本功能比較簡單。
Process.class.php文件如下:
<?php
/**
* Process
*
* @package
* @version $id$
* @copyright 2005-2011 SUCOP.COM
* @author Dijia Huang <huangdijia@gmail.com>
* @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'] <= 1){
unset($list[$name]);
}else{
$list[$name]['count'] -= 1;
$list[$name]['lasttime'] = time();
}
self::__setList($list);
}
}
/**
* getCount
*
* @static
* @access public
* @return void
*/
static public function getCount(){
$list = self::__getList();
$name = self::__getName();
return $list[$name]['count'];
}
/**
* getMaxnum
*
* @static
* @access public
* @return void
*/
static public function getMaxnum(){
$name = self::__getName();
return C($name) ? C($name) : self::PROCESS_MAXNUM;
}
/**
* getName
*
* @static
* @access public
* @return void
*/
static public function getName(){
return self::__getName();
}
/**
* isOvertop
*
* @static
* @access public
* @return void
*/
static public function isOvertop(){
return (self::getCount() > 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);
else
F(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;
}
}
?>
調(diào)用方法:
<?php
class IndexAction extends Action
{
// 初始化模塊
public function _initialize(){
parent::_initialize();
import('@.Util.Process');
Process::start();
}
function __destruct(){
Process :: destory();
}
public function index(){
C('Index_index', 3); // 動(dòng)態(tài)更改限制數(shù), 默認(rèn)為10
if(Process::isOvertop()) echo "超出限制";
else "未超出限制";
}
}
?>
希望本文所述對大家基于ThinkPHP框架的php程序設(shè)計(jì)有所幫助。
- ThinkPHP調(diào)用common/common.php函數(shù)提示錯(cuò)誤function undefined的解決方法
- 獲取php頁面執(zhí)行時(shí)間,數(shù)據(jù)庫讀寫次數(shù),函數(shù)調(diào)用次數(shù)等(THINKphp)
- thinkphp跨庫操作的簡單代碼實(shí)例
- thinkPHP2.1自定義標(biāo)簽庫的導(dǎo)入方法詳解
- ThinkPHP分組下自定義標(biāo)簽庫實(shí)例
- ThinkPHP使用UTFWry地址庫進(jìn)行IP定位實(shí)例
- Thinkphp調(diào)用Image類生成縮略圖的方法
- ThinkPHP調(diào)用百度翻譯類實(shí)現(xiàn)在線翻譯
- thinkPHP引入類的方法詳解
- thinkPHP自定義類實(shí)現(xiàn)方法詳解
- thinkphp實(shí)現(xiàn)無限分類(使用遞歸)
- ThinkPHP文件緩存類代碼分享
- thinkPHP簡單調(diào)用函數(shù)與類庫的方法
相關(guān)文章
PHP實(shí)現(xiàn)下載遠(yuǎn)程圖片保存到本地的方法
本篇文章主要介紹了PHP實(shí)現(xiàn)下載遠(yuǎn)程圖片的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-06-06
phpQuery讓php處理html代碼像jQuery一樣方便
這篇文章主要介紹了phpQuery讓php處理html代碼像jQuery一樣方便,需要的朋友可以參考下2015-01-01
thinkphp數(shù)據(jù)查詢和遍歷數(shù)組實(shí)例
這篇文章主要介紹了thinkphp數(shù)據(jù)查詢和遍歷數(shù)組的方法,包括數(shù)據(jù)庫的DSN方法配置、CURD操作方法以及模板的遍歷數(shù)組等技巧,具有一定的借鑒價(jià)值,需要的朋友可以參考下2014-11-11
thinkPHP線上自動(dòng)加載異常與修復(fù)方法實(shí)例分析
這篇文章主要介紹了thinkPHP線上自動(dòng)加載異常與修復(fù)方法,結(jié)合實(shí)例形式分析了針對服務(wù)器代碼不支持斜杠方式的情況下相關(guān)處理技巧,需要的朋友可以參考下2016-12-12
關(guān)于二級(jí)目錄拖拽排序的實(shí)現(xiàn)(源碼示例下載)
本篇文章介紹了,關(guān)于二級(jí)目錄拖拽排序的實(shí)現(xiàn)(源碼示例下載)。需要的朋友參考下2013-04-04
PHP7 安裝event擴(kuò)展的實(shí)現(xiàn)方法
這篇文章主要介紹了PHP7 安裝event擴(kuò)展的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10

