Server : nginx/1.20.1 System : Linux iZ2ze9ojcl78uluczwag69Z 4.18.0-240.22.1.el8_3.x86_64 #1 SMP Thu Apr 8 19:01:30 UTC 2021 x86_64 User : www ( 1000) PHP Version : 7.3.28 Disable Function : passthru,exec,system,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv Directory : /www/wwwroot/0531yanglao.com/app/admin/service/ |
<?php /* * @Description : 系统设置 * @Author : https://github.com/skyselang * @Date : 2020-10-12 * @LastEditTime : 2021-03-20 */ namespace app\admin\service; use think\facade\Db; use think\facade\App; use think\facade\Cache; use app\common\cache\AdminUserCache; use app\common\cache\AdminSettingCache; class AdminSettingService { // 默认设置id private static $admin_setting_id = 1; /** * 缓存设置 * * @param array $param 缓存参数 * @param string $method 请求方式 * * @return array|bool */ public static function settingCache($param = [], $method = 'get') { if ($method == 'get') { $config = Cache::getConfig(); if ($config['default'] == 'redis') { $cache = Cache::handler(); $data = $cache->info(); $byte['type'] = 'B'; $byte['value'] = $data['used_memory_lua']; $data['used_memory_lua_human'] = AdminToolService::byteTran($byte)['KB'] . 'K'; $data['uptime_in_days'] = $data['uptime_in_days'] . '天'; } elseif ($config['default'] == 'memcache') { $cache = Cache::handler(); $data = $cache->getstats(); $data['time'] = date('Y-m-d H:i:s', $data['time']); $data['uptime'] = $data['uptime'] / (24 * 60 * 60) . ' 天'; $data['bytes_read'] = AdminToolService::byteTran(['type' => 'B', 'value' => $data['bytes_read']])['MB'] . ' MB'; $data['bytes_written'] = AdminToolService::byteTran(['type' => 'B', 'value' => $data['bytes_written']])['MB'] . ' MB'; $data['limit_maxbytes'] = AdminToolService::byteTran(['type' => 'B', 'value' => $data['limit_maxbytes']])['MB'] . ' MB'; } elseif ($config['default'] == 'wincache') { $cache = Cache::handler(); $data['wincache_info']['wincache_fcache_meminfo'] = wincache_fcache_meminfo(); $data['wincache_info']['wincache_ucache_meminfo'] = wincache_ucache_meminfo(); $data['wincache_info']['wincache_rplist_meminfo'] = wincache_rplist_meminfo(); } $data['type'] = $config['default']; $data['read_times'] = Cache::getReadTimes(); $data['write_times'] = Cache::getWriteTimes(); $data['store_config'] = Cache::getStoreConfig($config['default']); return $data; } else { $admin_user = Db::name('admin_user') ->field('admin_user_id') ->where('is_delete', 0) ->select(); $admin_user_cache = []; foreach ($admin_user as $k => $v) { $user_cache = AdminUserCache::get($v['admin_user_id']); if ($user_cache) { $user_cache_temp['admin_user_id'] = $user_cache['admin_user_id']; $user_cache_temp['admin_token'] = $user_cache['admin_token']; $admin_user_cache[] = $user_cache_temp; } } $res = Cache::clear(); if (empty($res)) { exception(); } foreach ($admin_user_cache as $k => $v) { $admin_user_new = AdminUserService::info($v['admin_user_id']); $admin_user_new['admin_token'] = $v['admin_token']; AdminUserCache::set($admin_user_new['admin_user_id'], $admin_user_new); } $data['msg'] = '缓存已清空'; $data['clear'] = $res; return $data; } } /** * 验证码设置 * * @param array $param 验证码参数 * @param string $method 请求方式 * * @return array */ public static function settingVerify($param = [], $method = 'get') { if ($method == 'get') { $admin_setting = self::admin_setting(); $admin_verify = $admin_setting['admin_verify']; } else { $admin_setting_id = self::$admin_setting_id; $admin_verify['switch'] = $param['switch']; $admin_verify['curve'] = $param['curve']; $admin_verify['noise'] = $param['noise']; $admin_verify['bgimg'] = $param['bgimg']; $admin_verify['type'] = $param['type']; $admin_verify['length'] = $param['length']; $admin_verify['expire'] = $param['expire']; $update['admin_verify'] = serialize($admin_verify); $update['update_time'] = datetime(); $admin_setting = Db::name('admin_setting') ->where('admin_setting_id', $admin_setting_id) ->update($update); if (empty($admin_setting)) { exception(); } else { AdminSettingCache::del($admin_setting_id); } } return $admin_verify; } /** * Token设置 * * @param array $param token参数 * @param string $method 请求方式 * * @return array */ public static function settingToken($param = [], $method = 'get') { if ($method == 'get') { $admin_setting = self::admin_setting(); $admin_token = $admin_setting['admin_token']; } else { $admin_setting_id = self::$admin_setting_id; $admin_token['iss'] = $param['iss']; $admin_token['exp'] = $param['exp']; $update['admin_token'] = serialize($admin_token); $update['update_time'] = datetime(); $admin_setting = Db::name('admin_setting') ->where('admin_setting_id', $admin_setting_id) ->update($update); if (empty($admin_setting)) { exception(); } else { AdminSettingCache::del($admin_setting_id); } } return $admin_token; } /** * 默认设置 * * @return array */ public static function admin_setting() { $admin_setting_id = self::$admin_setting_id; $admin_setting = AdminSettingCache::get($admin_setting_id); if (empty($admin_setting)) { $admin_setting = Db::name('admin_setting') ->where('admin_setting_id', $admin_setting_id) ->find(); if (empty($admin_setting)) { $admin_setting['admin_setting_id'] = $admin_setting_id; $admin_setting['admin_verify'] = serialize([]); $admin_setting['admin_token'] = serialize([]); $admin_setting['create_time'] = datetime(); Db::name('admin_setting') ->insert($admin_setting); } // 验证码 $admin_verify = unserialize($admin_setting['admin_verify']); if (empty($admin_verify)) { $admin_verify['switch'] = false; //开关 $admin_verify['curve'] = false; //曲线 $admin_verify['noise'] = false; //杂点 $admin_verify['bgimg'] = false; //背景图 $admin_verify['type'] = 1; //类型:1数字,2字母,3数字字母,4算术,5中文 $admin_verify['length'] = 4; //位数3-6位 $admin_verify['expire'] = 180; //有效时间(秒) } // Token $admin_token = unserialize($admin_setting['admin_token']); if (empty($admin_token)) { $admin_token['iss'] = 'yylAdmin'; //签发者 $admin_token['exp'] = 12; //有效时间(小时) } $admin_setting['admin_verify'] = serialize($admin_verify); $admin_setting['admin_token'] = serialize($admin_token); $admin_setting['update_time'] = datetime(); Db::name('admin_setting') ->where('admin_setting_id', $admin_setting_id) ->update($admin_setting); AdminSettingCache::set($admin_setting_id, $admin_setting); $admin_setting['admin_verify'] = $admin_verify; $admin_setting['admin_token'] = $admin_token; } else { $admin_setting['admin_verify'] = unserialize($admin_setting['admin_verify']); $admin_setting['admin_token'] = unserialize($admin_setting['admin_token']); } return $admin_setting; } /** * 服务器信息 * * @return array */ public static function serverInfo() { $server_key = 'server'; $server_info = AdminSettingCache::get($server_key); if (empty($server_info)) { try { $mysql = Db::query('select version() as version'); $server_info['mysql'] = $mysql[0]['version']; //mysql } catch (\Throwable $th) { $server_info['mysql'] = ''; } $server_info['system_info'] = php_uname('s') . ' ' . php_uname('r'); //os $server_info['server_software'] = $_SERVER['SERVER_SOFTWARE']; //web $server_info['php_version'] = PHP_VERSION; //php $server_info['thinkphp'] = App::version(); //thinkphp $server_info['php_sapi_name'] = php_sapi_name(); //php_sapi_name $server_info['ip'] = $_SERVER['SERVER_ADDR']; //ip $server_info['domain'] = $_SERVER['SERVER_NAME']; //domain $server_info['port'] = $_SERVER['SERVER_PORT']; //port $server_info['server_protocol'] = $_SERVER['SERVER_PROTOCOL']; //protocol $server_info['max_execution_time'] = get_cfg_var('max_execution_time') . '秒 '; //max_execution_time $server_info['upload_max_filesize'] = get_cfg_var('upload_max_filesize'); //upload_max_filesize $server_info['post_max_size'] = get_cfg_var('post_max_size'); //post_max_size $expire = 12 * 60 * 60; AdminSettingCache::set($server_key, $server_info, $expire); } return $server_info; } }