国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > PHP > 正文

ThinkPHP進程計數類Process用法實例詳解

2024-05-04 23:39:13
字體:
來源:轉載
供稿:網友

這篇文章主要介紹了ThinkPHP進程計數類Process用法,以實例形式較為詳細的分析了Process類的定義及進程計數的實現技巧,具有一定參考借鑒價值,需要的朋友可以參考下

本文實例講述了ThinkPHP進程計數類Process用法。分享給大家供大家參考。具體如下:

項目中有一個需求:由于某一后臺任務比較占帶寬,所以要限制進程數。花了點時間,寫了類,目前版本功能比較簡單。

Process.class.php文件如下:

 

 
  1. <?php 
  2. /** 
  3. * Process  
  4.  
  5. * @package  
  6. * @version $id$ 
  7. * @copyright 2005-2011 SUCOP.COM 
  8. * @author Dijia Huang <huangdijia@gmail.com>  
  9. * @license PHP Version 3.0 {@link http://www.php.net/license/3_0.txt} 
  10. */ 
  11. class Process 
  12. const PROCESS_KEY = '~Process'
  13. const PROCESS_MAXNUM = 10; 
  14. /** 
  15. * start  
  16.  
  17. * @static 
  18. * @access public 
  19. * @return void 
  20. */ 
  21. static public function start(){ 
  22. $list = self::__getList(); 
  23. $name = self::__getName(); 
  24. if(!isset($list[$name])){ 
  25. $list[$name] = array('count'=>1, 'lasttime'=>time()); 
  26. }else
  27. if((time()-$list[$name]['time']) > 600){ 
  28. $list[$name]['count'] = 1; 
  29. }else
  30. $list[$name]['count'] += 1; 
  31. self::__setList($list); 
  32. /** 
  33. * destory  
  34.  
  35. * @static 
  36. * @access public 
  37. * @return void 
  38. */ 
  39. static public function destory(){ 
  40. $list = self::__getList(); 
  41. $name = self::__getName(); 
  42. if(isset($list[$name])){ 
  43. if($list[$name]['count'] <= 1){ 
  44. unset($list[$name]); 
  45. }else
  46. $list[$name]['count'] -= 1; 
  47. $list[$name]['lasttime'] = time(); 
  48. self::__setList($list); 
  49. /** 
  50. * getCount  
  51.  
  52. * @static 
  53. * @access public 
  54. * @return void 
  55. */ 
  56. static public function getCount(){ 
  57. $list = self::__getList(); 
  58. $name = self::__getName(); 
  59. return $list[$name]['count']; 
  60. /** 
  61. * getMaxnum  
  62.  
  63. * @static 
  64. * @access public 
  65. * @return void 
  66. */ 
  67. static public function getMaxnum(){ 
  68. $name = self::__getName(); 
  69. return C($name) ? C($name) : self::PROCESS_MAXNUM; 
  70. /** 
  71. * getName  
  72.  
  73. * @static 
  74. * @access public 
  75. * @return void 
  76. */ 
  77. static public function getName(){ 
  78. return self::__getName(); 
  79. /** 
  80. * isOvertop  
  81.  
  82. * @static 
  83. * @access public 
  84. * @return void 
  85. */ 
  86. static public function isOvertop(){ 
  87. return (self::getCount() > self::getMaxnum()); 
  88. /** 
  89. * getLasttime  
  90.  
  91. * @static 
  92. * @access public 
  93. * @return void 
  94. */ 
  95. static public function getLasttime(){ 
  96. $list = self::__getList(); 
  97. $name = self::__getName(); 
  98. return $list[$name]['lasttime']; 
  99. /** 
  100. * clear  
  101.  
  102. * @static 
  103. * @access public 
  104. * @return void 
  105. */ 
  106. static public function clear(){ 
  107. F(self::PROCESS_KEY, null); 
  108. /** 
  109. * __setList  
  110.  
  111. * @param mixed $list  
  112. * @static 
  113. * @access private 
  114. * @return void 
  115. */ 
  116. static private function __setList($list=null){ 
  117. if(!is_array($list) || empty($list)) 
  118. F(self::PROCESS_KEY, null); 
  119. else 
  120. F(self::PROCESS_KEY, $list); 
  121. /** 
  122. * __getList  
  123.  
  124. * @static 
  125. * @access private 
  126. * @return void 
  127. */ 
  128. static private function __getList(){ 
  129. $list = F(self::PROCESS_KEY); 
  130. if(!is_array($list)) return array(); 
  131. else return $list; 
  132. /** 
  133. * __getName  
  134.  
  135. * @static 
  136. * @access private 
  137. * @return void 
  138. */ 
  139. static private function __getName(){ 
  140. return (defined('GROUP_NAME') ? GROUP_NAME.'_' : '') . MODULE_NAME . '_' . ACTION_NAME; 
  141. ?> 

調用方法:

 

 
  1. <?php 
  2. class IndexAction extends Action  
  3. // 初始化模塊 
  4. public function _initialize(){ 
  5. parent::_initialize(); 
  6. import('@.Util.Process'); 
  7. Process::start(); 
  8. function __destruct(){ 
  9. Process :: destory(); 
  10. }  
  11. public function index(){ 
  12. C('Index_index', 3); // 動態更改限制數, 默認為10 
  13. if(Process::isOvertop()) echo "超出限制"
  14. else "未超出限制"
  15. ?> 

希望本文所述對大家基于ThinkPHP框架的php程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 灵宝市| 扶绥县| 九龙坡区| 华池县| 陵川县| 宣威市| 雷州市| 丰镇市| 会宁县| 天门市| 旬阳县| 皮山县| 墨玉县| 丹寨县| 佛冈县| 东莞市| 壶关县| 汝城县| 古田县| 红桥区| 娄烦县| 宣汉县| 重庆市| 剑川县| 理塘县| 长治市| 长丰县| 永靖县| 关岭| 长垣县| 合川市| 遂川县| 多伦县| 景洪市| 左贡县| 蓬莱市| 交城县| 昌乐县| 萍乡市| 和林格尔县| 名山县|