一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - PHP教程 - ThinkPHP進程計數類Process用法實例詳解

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

2020-11-20 13:23deeka PHP教程

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

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

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

Process.class.php文件如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
<?php
/**
 * Process
 *
 * @package
 * @version $id$
 * @copyright 2005-2011 SUCOP.COM
 * @author Dijia Huang <[email protected]>
 * @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;
  }
}
?>

調用方法:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?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); // 動態更改限制數, 默認為10
    if(Process::isOvertop()) echo "超出限制";
    else "未超出限制";
  }
}
?>

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 成人欧美视频在线看免费 | 美女口述又粗又大感觉 | 91桃色视频在线观看 | 无人区在线观看免费完整版免费 | 欧美高清一级 | 国产精品第1页在线播放 | 超碰成人在线播放 | 99热精品成人免费观看 | 国产成人小视频 | 青草视频在线观看免费视频 | bdsm酷刑折磨死美女 | 国产青色 | chinese456老年gay china外卖员gay帮口 | 亚洲国产精品成人久久 | 国产资源中文字幕 | 久草在线福利资站免费视频 | 国产午夜精品一区二区三区不卡 | 精品国产福利在线 | 国产日韩欧美在线观看不卡 | 妇伦小说| 爱福利视频一区 | 精品国产免费观看一区高清 | 国产视频三区 | 欧美视频一区二区专区 | 三星w699| videojapan日本孕交孕 | 免费黄色小说 | 久久国产精品无码视欧美 | 亚洲精品一区二区三区在线看 | 日韩免费视频一区 | 美女扒开腿让男人桶爽免费gif | 男男视频18免费网站 | 妹妹骑上来蹭着蹭着就射了 | 极品奶妈漫画 | 偷偷狠狠的日日高清完整视频 | 69成人网| 久久99精品国产免费观看 | www.色小妹 | 手机在线观看网站免费视频 | 日本人成动漫网站在线观看 | 窝窝色资源站 |