加密解密类自PHP7.1开始抛弃传统的加密函数mcrypt_encrypt转而使用openssl_encrypt,该类支持的PHP版本为:(PHP5>=5.3.0,PHP7)METHOD=$method;}}/***加密字符串**@paramString待加密数据*@paramstring加密密钥,如果为空,使用通用密钥*@returnvoid*/publicfunctionencrypt($input,$key=''){如果(空($key))$key=$this->KEY;$data=openssl_encrypt($input,$this->METHOD,$key,OPENSSL_RAW_DATA);$data=base64_encode($data);返回$数据;}/***解密字符串**@paramString待解密字符串*@paramstring解密密钥,如果为空,使用公钥*@returnvoid*/publicfunctiondecrypt($input,$key=''){if(空($key))$key=$this->KEY;$data=openssl_decrypt(base64_decode($input),$this->METHOD,$key,OPENSSL_RAW_DATA);返回$数据;}}发送邮件类首先下载PHPMailer,解压,放到你的项目中,修改类中的导入路径。_init();$this->_baseURL=$_SERVER['REQUEST_SCHEME']。'://'。$_SERVER['HTTP_HOST'];}privatefunction_init(){if($this->_email==null){$mail=newPHPMailer(true);尝试{$mail->SMTPDebug=0;$邮件->isSMTP();$mail->Host=get_global_config('mail.Host');$mail->SMTPAuth=true;$mail->Username=get_global_config('mail.Username');$mail->Password=get_global_config('mail.Password');$mail->SMTPSecure=get_global_config('mail.SMTPSecure');$mail->Port=get_global_config('mail.Port');$mail->setFrom(get_global_config('mail.Username'),get_global_config('mail.Fromname'));$this->_email=$mail;返回真;}catch(Exception$e){//返回null;返回假;}}返回真;}publicfunctionsendEmail($toEmail,$toUsername,$subject,$body){if(!$this->_email)返回false;尝试{$this->_email->addAddress($toEmail,$toUsername);$this->_email->isHTML(true);$this->_email->Subject=$subject;$this->_email->Body=$body;//当邮件不支持HTML时显示的邮件内容$this->_email->AltBody=$body;$this->_email->send();//echo'消息已发送';返回真;}赶上(例如$e){returnfalse;//echo'消息无法发送。';//echo'邮件程序错误:'.$this->_email->错误信息;}}}模拟锁使用Redis模拟进程锁,参考Todiscuz进程锁源码cache=Roc::redis();$this->cache->select(Roc::get('redis.db'));}/***是否锁定**@paramstring锁定名称*@paraminteger锁定时间*@returnboolean*/publicfunctionislocked($process,$ttl=0){$ttl=$ttl<1?600:整数($ttl);返回$this->_status('get',$process)||$this->_find($process,$ttl);}/***unlock**@paramstringlockname*@returnvoid*/publicfunctionunlock($process){$this->_status('rm',$process);$this->_cmd('rm',$process);}privatefunction_status($action,$process){static$plist=array();switch($action){case'set':$plist[$process]=true;休息;case'get':return!empty($plist[$process]);休息;案件'rm':$plist[$process]=null;休息;case'clear':$plist=array();休息;}返回真;}privatefunction_find($name,$ttl){if(!$this->_cmd('get',$name)){$this->_cmd('set',$name,$ttl);$ret=假;}else{$ret=true;}//$this->_status('set',$name);返回$ret;}私有函数_cmd($cmd,$name,$ttl=0){return$this->_process_cmd_memory($cmd,$name,$ttl);//静态$allowmem;//if($allowmem===null){//$allowmem=Roc::get('redis.db');//}//if($allowmem){//返回self::_process_cmd_memory($cmd,$name,$ttl);//}else{//返回假;////返回self::_process_cmd_db($cmd,$name,$ttl);//}}私有函数_process_cmd_memory($cmd,$name,$ttl=0){$ret='';$name='进行ss_lock_'.$name;switch($cmd){case'set':$ret=$this->cache->setex($name,time(),$ttl);}//$ret=memory('set','process_lock_'.$name,time(),$ttl);休息;case'get':$ret=$this->cache->get($name);//$ret=memory('get','process_lock_'.$name);休息;case'rm':$ret=$this->cache->delete($name);//$ret=memory('rm','process_lock_'.$name);}回显$cmd。':';变量转储($ret);返回$ret;}privatefunction_process_cmd_db($cmd,$name,$ttl=0){$ret='';switch($cmd){case'set':$ret=C::t('common_process')->insert(array('processid'=>$name,'expiry'=>time()+$ttl),假,真);休息;case'get':$ret=C::t('common_process')->fetch($name);如果(空($ret)||$ret['expiry']
