用户名  找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1106|回复: 0
打印 上一主题 下一主题

ThinkPHP进程计数类Process用法实例详解

[复制链接]

2560

主题

2560

帖子

7622

积分

论坛元老

Rank: 8Rank: 8

积分
7622
跳转到指定楼层
楼主
发表于 2018-2-14 05:42:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

            本文实例讲述了ThinkPHP进程计数类Process用法。分享给大家供大家参考。具体如下:
项目中有一个需求:由于某一后台任务比较占带宽,所以要限制进程数。花了点时间,写了类,目前版本功能比较简单。
Process.class.php文件如下:

* @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']  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:ROCESS_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:ROCESS_KEY, null);
    else
      F(self:ROCESS_KEY, $list);
  }
  /**
   * __getList
   *
   * @static
   * @access private
   * @return void
   */
  static private function __getList(){
    $list = F(self:ROCESS_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;
  }
}
?>
调用方法:
希望本文所述对大家基于ThinkPHP框架的php程序设计有所帮助。
            
            
您可能感兴趣的文章:
  • 获取php页面执行时间,数据库读写次数,函数调用次数等(THINKphp)
  • ThinkPHP使用UTFWry地址库进行IP定位实例
  • ThinkPHP调用百度翻译类实现在线翻译
  • ThinkPHP调用common/common.php函数提示错误function undefined的解决方法
  • ThinkPHP分组下自定义标签库实例
  • Thinkphp调用Image类生成缩略图的方法
  • ThinkPHP文件缓存类代码分享
  • thinkphp实现无限分类(使用递归)
  • thinkPHP2.1自定义标签库的导入方法详解
  • thinkphp跨库操作的简单代码实例
  • thinkPHP自定义类实现方法详解
  • thinkPHP引入类的方法详解
  • thinkPHP简单调用函数与类库的方法
            
  • 分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则