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

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

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程序設計有所幫助。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 久久这里只有精品视频e | caoporn超碰最新地址进入 | 欧美日韩亚洲区久久综合 | sxx免费看观看美女 sss亚洲国产欧美一区二区 | ady@ady9.映画网| 久久精品国产亚洲AV热无遮挡 | 亚洲精品国产精品精 | 女子张腿让男人桶免费 | 国产精品久久久久久久久齐齐 | 啪啪大幂幂被c | 99国产精品久久久久久久... | 午夜福利在线观看6080 | 日麻逼 | 久久热r在线视频精品 | 明星ai人脸替换造梦在线播放 | 亚洲aⅴ男人的天堂在线观看 | 国产麻豆麻豆 | 亚洲H成年动漫在线观看不卡 | 亚洲H成年动漫在线观看不卡 | 亚洲精品国产福利片 | 1769在线视频 | 成人亚洲精品一区 | 日本护士撒尿xxxxhd | 亚洲天堂网站 | 国产成人愉拍精品 | bban女同系列022在线观看 | 日产精品一卡2卡三卡4乱码久久 | 国产日本欧美亚洲精品视 | 97影院3| 操美女 | 欧美大陆日韩一区二区三区 | 射逼网| 催奶师小说 | 欧美综合国产精品日韩一 | 女人被男人躁得好爽免费视频 | 青草色视频 | 91大片淫黄大片在线天堂 | 精品国产精品人妻久久无码五月天 | 亚洲色图第四色 | 美女黄a | 热久久最新网址 |