ThinkPHP進程計數(shù)類Process用法實例詳解
更新時間:2015年09月25日 11:27:24 作者:deeka
這篇文章主要介紹了ThinkPHP進程計數(shù)類Process用法,以實例形式較為詳細的分析了Process類的定義及進程計數(shù)的實現(xiàn)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
本文實例講述了ThinkPHP進程計數(shù)類Process用法。分享給大家供大家參考。具體如下:
項目中有一個需求:由于某一后臺任務比較占帶寬,所以要限制進程數(shù)?;它c時間,寫了類,目前版本功能比較簡單。
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; } } ?>
調用方法:
<?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); // 動態(tài)更改限制數(shù), 默認為10 if(Process::isOvertop()) echo "超出限制"; else "未超出限制"; } } ?>
希望本文所述對大家基于ThinkPHP框架的php程序設計有所幫助。
您可能感興趣的文章:
- ThinkPHP調用common/common.php函數(shù)提示錯誤function undefined的解決方法
- 獲取php頁面執(zhí)行時間,數(shù)據(jù)庫讀寫次數(shù),函數(shù)調用次數(shù)等(THINKphp)
- thinkphp跨庫操作的簡單代碼實例
- thinkPHP2.1自定義標簽庫的導入方法詳解
- ThinkPHP分組下自定義標簽庫實例
- ThinkPHP使用UTFWry地址庫進行IP定位實例
- Thinkphp調用Image類生成縮略圖的方法
- ThinkPHP調用百度翻譯類實現(xiàn)在線翻譯
- thinkPHP引入類的方法詳解
- thinkPHP自定義類實現(xiàn)方法詳解
- thinkphp實現(xiàn)無限分類(使用遞歸)
- ThinkPHP文件緩存類代碼分享
- thinkPHP簡單調用函數(shù)與類庫的方法
相關文章
php實現(xiàn)自動獲取生成文章主題關鍵詞功能的深入分析
本篇文章是對php實現(xiàn)自動獲取生成文章主題關鍵詞功能進行了詳細的分析介紹,需要的朋友參考下2013-06-06用PHP寫的MySQL數(shù)據(jù)庫用戶認證系統(tǒng)代碼
用PHP寫的MySQL數(shù)據(jù)庫用戶認證系統(tǒng)代碼...2007-03-03Zend?Framework框架的校驗器使用使用示例(自定義校驗器和校驗器鏈)
這篇文章主要介紹了Zend?Framework框架的校驗器使用使用示例(自定義校驗器和校驗器鏈),需要的朋友可以參考下2014-03-03thinkphp3.2同時連接兩個數(shù)據(jù)庫的簡單方法
這篇文章主要給大家介紹了關于thinkphp3.2同時連接兩個數(shù)據(jù)庫的簡單方法,文中通過示例代碼介紹的非常詳細,對大家學習或者使用thinkphp3.2具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧2019-08-08