fix:修复已知bug
This commit is contained in:
@@ -12,8 +12,8 @@ declare (strict_types=1);
|
||||
// +----------------------------------------------------------------------
|
||||
|
||||
namespace app\admin\controller\system;
|
||||
set_time_limit(600);
|
||||
use GuzzleHttp\Exception\TransferException;
|
||||
use process\Monitor;
|
||||
use support\Response;
|
||||
use system\File;
|
||||
use system\Http;
|
||||
@@ -46,6 +46,11 @@ class Plugin extends AdminController
|
||||
*/
|
||||
static mixed $ServerBody = '';
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取本地插件列表
|
||||
* @return Response
|
||||
@@ -72,8 +77,7 @@ class Plugin extends AdminController
|
||||
|
||||
$name = input('name');
|
||||
$pluginPath = plugin_path($name);
|
||||
|
||||
if (is_dir($pluginPath)) {
|
||||
if (is_file($pluginPath . 'config.json')) {
|
||||
return $this->error('请勿重复安装插件');
|
||||
}
|
||||
|
||||
@@ -206,6 +210,7 @@ class Plugin extends AdminController
|
||||
throw new \Exception(__('插件数据不存在'), -117);
|
||||
}
|
||||
|
||||
Monitor::pause();
|
||||
$pluginDir = plugin_path($name);
|
||||
foreach (File::getCopyDirs($name) as $copyDir) {
|
||||
copydirs($copyDir, root_path() . str_replace($pluginDir, '', $copyDir));
|
||||
|
||||
@@ -59,6 +59,16 @@
|
||||
margin-right: 5px;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (max-width: 1024px) {
|
||||
.layui-form-mid {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.layui-form-item .layui-input-inline {
|
||||
max-width: 180px;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
<div class="layui-fluid">
|
||||
<div class="layui-row">
|
||||
@@ -996,7 +1006,7 @@
|
||||
</i>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-mid layui-word-aux">*
|
||||
<div class="layui-word-aux">*
|
||||
{:__('发送邮件依赖的函数,如不可用请开启函数扩展')}!</div>
|
||||
</div>
|
||||
|
||||
@@ -1004,11 +1014,11 @@
|
||||
<div class="layui-form-item ">
|
||||
<label class="layui-form-label">{:__('信息模板')}</label>
|
||||
<div class="layui-input-inline">
|
||||
<div class="layui-form-mid layui-word-aux">
|
||||
<div class="layui-word-aux">
|
||||
<a href="javascript:void(0)" class="layui-color-blue"
|
||||
lay-open="" data-url="{:url('/Tpl/showTpl')}"
|
||||
data-title="邮件模板{:__('')}" data-area="500px,260px"
|
||||
data-offset="30%">[{:__('点击编辑')}]</a>
|
||||
data-title="{:__('邮件模板')}" data-area="500px,260px"
|
||||
data-offset="20px">[{:__('点击编辑')}]</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -61,11 +61,11 @@
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">{:__('地图经度')}</label>
|
||||
<div class="layui-input-inline">
|
||||
<input name="longitude" placeholder="{:__('请输入地图经度')}" value="{$data.longitude}" class="layui-input" />
|
||||
<input name="longitude" placeholder="{:__('请输入地图经度')}" value="{$data.longitude|default=''}" class="layui-input" />
|
||||
</div>
|
||||
<label class="layui-form-label">{:__('地图纬度')}</label>
|
||||
<div class="layui-input-inline">
|
||||
<input name="latitude" placeholder="{:__('请输入地图纬度')}" value="{$data.latitude}" class="layui-input" />
|
||||
<input name="latitude" placeholder="{:__('请输入地图纬度')}" value="{$data.latitude|default=''}" class="layui-input" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -3,6 +3,7 @@ declare (strict_types = 1);
|
||||
|
||||
namespace app\common\library;
|
||||
|
||||
use support\Log;
|
||||
use think\facade\Db;
|
||||
|
||||
/**
|
||||
@@ -13,6 +14,7 @@ class DataBase {
|
||||
/**
|
||||
* 导入目录下Install.sql文件
|
||||
* @param string $sqlPath
|
||||
* @throws \Exception
|
||||
*/
|
||||
public static function importSql(string $sqlPath)
|
||||
{
|
||||
@@ -27,7 +29,9 @@ class DataBase {
|
||||
}
|
||||
try {
|
||||
Db::getPdo()->exec($line);
|
||||
} catch (\Throwable $th) {}
|
||||
} catch (\Throwable $th) {
|
||||
Log::info($th->getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -36,22 +36,22 @@ class Upload
|
||||
/**
|
||||
* 文件类型
|
||||
*/
|
||||
protected mixed $fileClass;
|
||||
protected mixed $fileClass = '';
|
||||
|
||||
/**
|
||||
* 文件名称
|
||||
*/
|
||||
protected mixed $filename;
|
||||
protected mixed $filename = '';
|
||||
|
||||
/**
|
||||
* 文件保存路径
|
||||
*/
|
||||
protected mixed $filepath;
|
||||
protected mixed $filepath = '';
|
||||
|
||||
/**
|
||||
* 文件全路径名称
|
||||
*/
|
||||
protected mixed $resource;
|
||||
protected mixed $resource = '';
|
||||
|
||||
/**
|
||||
* 附件信息
|
||||
@@ -61,7 +61,7 @@ class Upload
|
||||
/**
|
||||
* 图形对象实例
|
||||
*/
|
||||
protected mixed $Images;
|
||||
protected mixed $Images = '';
|
||||
|
||||
/**
|
||||
* 错误信息
|
||||
|
||||
@@ -146,7 +146,7 @@ class AdminRules extends Model
|
||||
*/
|
||||
public static function export(string $name): array
|
||||
{
|
||||
$list = self::field('id,pid,title,router,icon,auth,type')->where('note', $name)->select()->toArray();
|
||||
$list = self::field('id,pid,title,router,icon,auth,type')->where('note', $name)->order('sort asc')->select()->toArray();
|
||||
return self::parseMenuChildren(list_to_tree($list));
|
||||
}
|
||||
|
||||
|
||||
@@ -465,6 +465,9 @@ if (!function_exists('cdn_Prefix')) {
|
||||
* 获取远程图片前缀
|
||||
* @return string
|
||||
* @throws \Psr\SimpleCache\InvalidArgumentException
|
||||
* @throws \think\db\exception\DataNotFoundException
|
||||
* @throws \think\db\exception\DbException
|
||||
* @throws \think\db\exception\ModelNotFoundException
|
||||
*/
|
||||
function cdn_Prefix()
|
||||
{
|
||||
@@ -696,14 +699,17 @@ if (!function_exists('system_reload')) {
|
||||
*/
|
||||
function system_reload(): bool
|
||||
{
|
||||
\process\Monitor::resume();
|
||||
if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (function_exists('posix_kill')
|
||||
&& function_exists('posix_getppid')) {
|
||||
posix_kill(posix_getppid(), 10);
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -984,13 +990,17 @@ if (!function_exists('is_today')) {
|
||||
if (!function_exists('published_date')) {
|
||||
/**
|
||||
* 格式化时间
|
||||
*
|
||||
* @param [type] $time
|
||||
* @param bool $unix
|
||||
* @return string
|
||||
*/
|
||||
function published_date($time): string
|
||||
function published_date($time, bool $unix = true): string
|
||||
{
|
||||
$time = preg_replace('/\D/', '', $time);
|
||||
if (!$unix) {
|
||||
$time = strtotime($time);
|
||||
|
||||
}
|
||||
|
||||
$currentTime = time() - $time;
|
||||
$published = array(
|
||||
'86400' => '天',
|
||||
@@ -998,6 +1008,7 @@ if (!function_exists('published_date')) {
|
||||
'60' => '分钟',
|
||||
'1' => '秒'
|
||||
);
|
||||
|
||||
if ($currentTime == 0) {
|
||||
return '1秒前';
|
||||
} else if ($currentTime >= 604800 || $currentTime < 0) {
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
Target Server Version : 50738
|
||||
File Encoding : 65001
|
||||
|
||||
Date: 28/11/2022 18:45:45
|
||||
Date: 19/12/2022 19:20:36
|
||||
*/
|
||||
|
||||
SET NAMES utf8mb4;
|
||||
@@ -51,13 +51,13 @@ CREATE TABLE `__PREFIX__admin` (
|
||||
INDEX `id`(`id`) USING BTREE,
|
||||
INDEX `name`(`name`) USING BTREE,
|
||||
INDEX `pwd`(`pwd`) USING BTREE
|
||||
) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '后台管理员表' ROW_FORMAT = DYNAMIC;
|
||||
) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '后台管理员表' ROW_FORMAT = DYNAMIC;
|
||||
|
||||
-- ----------------------------
|
||||
-- Records of __PREFIX__admin
|
||||
-- ----------------------------
|
||||
INSERT INTO `__PREFIX__admin` VALUES (1, '1', '2', '3', 'admin', 'meystack', '13682bec405cf4b9002e6e8306312ce6', 1, 'a:3:{i:0;s:12:\"测试效果\";i:1;s:15:\"隔壁帅小伙\";i:2;s:9:\"技术宅\";}', '/upload/avatars/f8e34ec67a2a0233_100x100.jpg', '海阔天空,有容乃大', 'admin@swiftadmin.net', '0310', '15188888888', '高级管理人员', 347, '河北省邯郸市', '127.0.0.1', 1669615752, '3232254977', 1, NULL, 1596682835, 1669621462, NULL);
|
||||
INSERT INTO `__PREFIX__admin` VALUES (2, '2', '4', '5,6', 'ceshi', '测试用户', '13682bec405cf4b9002e6e8306312ce6', 1, 'a:3:{i:0;s:6:\"呵呵\";i:1;s:5:\"Think\";i:2;s:12:\"铁血柔肠\";}', '/upload/avatars/a0b923820dcc509a_100x100.png', 'PHP是全世界最好的语言', 'baimei@your.com', '0310', '15188888888', '我原本以为吕布已经天下无敌了,没想到还有比吕布勇猛的,这谁的部将?', 55, '河北省邯郸市廉颇大道110号指挥中心', '127.0.0.1', 1668661258, '3232254977', 1, '违规', 1609836672, 1669619806, NULL);
|
||||
INSERT INTO `__PREFIX__admin` VALUES (1, '1', '2', '3', 'admin', 'meystack', '13682bec405cf4b9002e6e8306312ce6', 1, 'a:3:{i:0;s:12:\"测试效果\";i:1;s:15:\"隔壁帅小伙\";i:2;s:9:\"技术宅\";}', '/upload/avatars/f8e34ec67a2a0233_100x100.jpg', '海阔天空,有容乃大', 'admin@swiftadmin.net', '0310', '15188888888', '高级管理人员', 371, '河北省邯郸市', '127.0.0.1', 1671360587, '3232254977', 1, NULL, 1596682835, 1671360587, NULL);
|
||||
INSERT INTO `__PREFIX__admin` VALUES (2, '2', '4', '5,6', 'ceshi', '测试用户', '13682bec405cf4b9002e6e8306312ce6', 1, 'a:3:{i:0;s:6:\"呵呵\";i:1;s:5:\"Think\";i:2;s:12:\"铁血柔肠\";}', '/upload/avatars/a0b923820dcc509a_100x100.png', 'PHP是全世界最好的语言', 'baimei@your.com', '0310', '15188888888', '我原本以为吕布已经天下无敌了,没想到还有比吕布勇猛的,这谁的部将?', 56, '河北省邯郸市廉颇大道110号指挥中心', '127.0.0.1', 1669816238, '3232254977', 1, '违规', 1609836672, 1669816238, NULL);
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for __PREFIX__admin_access
|
||||
@@ -77,7 +77,8 @@ CREATE TABLE `__PREFIX__admin_access` (
|
||||
-- Records of __PREFIX__admin_access
|
||||
-- ----------------------------
|
||||
INSERT INTO `__PREFIX__admin_access` VALUES (1, '1', NULL, NULL);
|
||||
INSERT INTO `__PREFIX__admin_access` VALUES (2, '2', '85,86,87,88,89,90,91,92,93,100,101,102,103,104,105,106,107,108,109,110,111,112', '8');
|
||||
INSERT INTO `__PREFIX__admin_access` VALUES (2, '2', '5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,115,116,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,85,86,87,88,89,90,91,92,93,100,101,102,103,104,105,106,107,108,109,110,111,112', '8');
|
||||
INSERT INTO `__PREFIX__admin_access` VALUES (3, '1', NULL, NULL);
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for __PREFIX__admin_group
|
||||
@@ -155,7 +156,7 @@ CREATE TABLE `__PREFIX__admin_notice` (
|
||||
-- Records of __PREFIX__admin_notice
|
||||
-- ----------------------------
|
||||
INSERT INTO `__PREFIX__admin_notice` VALUES (1, 'notice', 1, '系统通知', '您有新的通知内容', 0, '10.10.11.22', 0, 0, 0, 1668249585, NULL);
|
||||
INSERT INTO `__PREFIX__admin_notice` VALUES (2, 'message', 1, '请注意查收短消息', '听说你又接了一个大项目', 2, '10.10.11.22', 0, 0, 0, 1668323353, NULL);
|
||||
INSERT INTO `__PREFIX__admin_notice` VALUES (2, 'message', 1, '请注意查收短消息', '听说你又接了一个大项目', 2, '10.10.11.22', 0, 0, 1, 1668323353, NULL);
|
||||
INSERT INTO `__PREFIX__admin_notice` VALUES (3, 'todo', 1, '您有一项待办', '请完成项目的迭代工作与BUG修复', 0, '10.10.11.22', 0, 0, 0, 1668393025, NULL);
|
||||
|
||||
-- ----------------------------
|
||||
@@ -182,7 +183,7 @@ CREATE TABLE `__PREFIX__admin_rules` (
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
INDEX `id`(`id`) USING BTREE,
|
||||
INDEX `sort`(`sort`) USING BTREE
|
||||
) ENGINE = InnoDB AUTO_INCREMENT = 117 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '菜单权限表' ROW_FORMAT = DYNAMIC;
|
||||
) ENGINE = InnoDB AUTO_INCREMENT = 1682 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '菜单权限表' ROW_FORMAT = DYNAMIC;
|
||||
|
||||
-- ----------------------------
|
||||
-- Records of __PREFIX__admin_rules
|
||||
@@ -354,7 +355,7 @@ CREATE TABLE `__PREFIX__company` (
|
||||
-- Records of __PREFIX__company
|
||||
-- ----------------------------
|
||||
INSERT INTO `__PREFIX__company` VALUES (1, '北京总部技术公司', 'bj', '北京市东城区长安街880号', 10000, '权栈', 15100000001, '010-10000', 'coolsec@foxmail.com', '91130403XXA0AJ7XXM', '01', '02', 1613711884, NULL);
|
||||
INSERT INTO `__PREFIX__company` VALUES (2, '河北分公司', 'hb', '河北省邯郸市丛台区公园路880号', 56000, '权栈', 12345678901, '0310-12345678', 'coolsec@foxmail.com', 'code', NULL, NULL, 1613787702, NULL);
|
||||
INSERT INTO `__PREFIX__company` VALUES (2, '河北分公司', 'hb', '河北省邯郸市丛台区公园路880号', 56000, '权栈', 12345678901, '0310-12345678', 'coolsec@foxmail.com', 'code', ' ', ' ', 1613787702, NULL);
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for __PREFIX__config
|
||||
@@ -396,7 +397,7 @@ INSERT INTO `__PREFIX__config` VALUES (18, 'auth_code', 0, NULL, 'string', 'wMRk
|
||||
INSERT INTO `__PREFIX__config` VALUES (19, 'system_logs', 0, NULL, 'string', '0', '后台日志');
|
||||
INSERT INTO `__PREFIX__config` VALUES (20, 'system_exception', 0, NULL, 'string', '0', '异常日志');
|
||||
INSERT INTO `__PREFIX__config` VALUES (21, 'cache_status', 0, 'cache', 'string', '1', '缓存状态');
|
||||
INSERT INTO `__PREFIX__config` VALUES (22, 'cache_type', 0, 'cache', 'string', 'file', '缓存类型');
|
||||
INSERT INTO `__PREFIX__config` VALUES (22, 'cache_type', 0, 'cache', 'string', 'redis', '缓存类型');
|
||||
INSERT INTO `__PREFIX__config` VALUES (23, 'cache_time', 0, 'cache', 'string', '6000', '缓存时间');
|
||||
INSERT INTO `__PREFIX__config` VALUES (24, 'cache_host', 0, 'cache', 'string', '127.0.0.1', '服务器IP');
|
||||
INSERT INTO `__PREFIX__config` VALUES (25, 'cache_port', 0, 'cache', 'string', '6379', '端口');
|
||||
@@ -426,9 +427,9 @@ INSERT INTO `__PREFIX__config` VALUES (48, 'upload_water_pct', 0, 'upload', 'str
|
||||
INSERT INTO `__PREFIX__config` VALUES (49, 'upload_water_img', 0, 'upload', 'string', '/', '图片水印地址');
|
||||
INSERT INTO `__PREFIX__config` VALUES (50, 'upload_water_pos', 0, 'upload', 'string', '9', '水印位置');
|
||||
INSERT INTO `__PREFIX__config` VALUES (51, 'play', 0, NULL, 'array', '{\"play_width\":\"960\",\"play_height\":\"450\",\"play_show\":\"0\",\"play_second\":\"10\",\"play_area\":\"大陆,香港,中国台湾,美国,韩国,日本,泰国,印度,英国,法国,俄罗斯,新加坡,其它\",\"play_year\":\"2022,2021,2020,2019,2018,2017,2016,2015,2014,2013,2012,2011,2010,2009,2008,2007,2006,2005,2004,2003,2002,2001,2000,1999\",\"play_version\":\"高清版,剧场版,抢先版,OVA,TV,影院版\",\"play_language\":\"国语,英语,粤语,韩语,日语,法语,德语,泰语,俄语,其它\",\"play_week\":\"周一,周二,周三,周四,周五,周六,周日\",\"play_playad\":\"http:\\/\\/www.swiftadmin.net\\/api\\/show.html\",\"play_down\":\"http:\\/\\/www.swiftadmin.net\\/api\\/show.html\",\"play_downgorup\":\"http:\\/\\/down.swiftadmin.net\\/\"}', '播放器数据');
|
||||
INSERT INTO `__PREFIX__config` VALUES (52, 'cloud_status', 0, NULL, 'string', '1', '是否开启OSS上传');
|
||||
INSERT INTO `__PREFIX__config` VALUES (53, 'cloud_type', 0, NULL, 'string', 'qcloud_oss', 'OSS上传类型');
|
||||
INSERT INTO `__PREFIX__config` VALUES (54, 'aliyun_oss', 0, NULL, 'array', '{\"accessId\":\"LTAI5t**LJu61vC\",\"accessSecret\":\"knwIiD*****u61l3a8LJu6\",\"bucket\":\"bucket\",\"endpoint\":\"oss-cn-beijing.aliyuncs.com\",\"url\":\"http:\\/\\/oss-cn-beijing.aliyuncs.com\"}', '阿里云OSS');
|
||||
INSERT INTO `__PREFIX__config` VALUES (52, 'cloud_status', 0, NULL, 'string', '0', '是否开启OSS上传');
|
||||
INSERT INTO `__PREFIX__config` VALUES (53, 'cloud_type', 0, NULL, 'string', 'aliyun_oss', 'OSS上传类型');
|
||||
INSERT INTO `__PREFIX__config` VALUES (54, 'aliyun_oss', 0, NULL, 'array', '{\"accessId\":\"LTAI5tR*****nVMe1vC\",\"accessSecret\":\"knwIiD8rINV********3ysvbU0pk\",\"bucket\":\"bucket\",\"endpoint\":\"oss-cn-beijing.aliyuncs.com\",\"url\":\"http:\\/\\/oss-cn-beijing.aliyuncs.com\"}', '阿里云OSS');
|
||||
INSERT INTO `__PREFIX__config` VALUES (55, 'qcloud_oss', 0, NULL, 'array', '{\"app_id\":\"1252296528\",\"secret_id\":\"LTAI5333k*****NnVMe1vC\",\"secret_key\":\"kFStrm******aJdocxsSScjRt9A\",\"bucket\":\"testpack\",\"region\":\"ap-beijing\",\"url\":\"\"}', '腾讯云OSS');
|
||||
INSERT INTO `__PREFIX__config` VALUES (56, 'email', 0, NULL, 'array', '{\"smtp_debug\":\"0\",\"smtp_host\":\"smtp.163.com\",\"smtp_port\":\"587\",\"smtp_name\":\"管理员\",\"smtp_user\":\"domain@163.com\",\"smtp_pass\":\"KNWSGPUYBMFATCIZ\",\"smtp_test\":\"youremail@foxmail.com\"}', '邮箱配置');
|
||||
INSERT INTO `__PREFIX__config` VALUES (57, 'qq', 0, NULL, 'array', '{\"app_id\":\"\",\"app_key\":\"\",\"callback\":\"\"}', 'QQ登录');
|
||||
@@ -521,14 +522,14 @@ CREATE TABLE `__PREFIX__dictionary` (
|
||||
-- ----------------------------
|
||||
-- Records of __PREFIX__dictionary
|
||||
-- ----------------------------
|
||||
INSERT INTO `__PREFIX__dictionary` VALUES (1, 0, '内容属性', 'content', 1, '', 1, 1659839499, 1637738903, NULL);
|
||||
INSERT INTO `__PREFIX__dictionary` VALUES (2, 1, '头条', '1', 2, '', 1, 1638093403, 1638093403, NULL);
|
||||
INSERT INTO `__PREFIX__dictionary` VALUES (3, 1, '推荐', '2', 3, '', 1, 1657367329, 1638093425, NULL);
|
||||
INSERT INTO `__PREFIX__dictionary` VALUES (4, 1, '幻灯', '3', 4, '', 1, 1661957438, 1638093430, NULL);
|
||||
INSERT INTO `__PREFIX__dictionary` VALUES (5, 1, '滚动', '4', 5, '', 1, 1638093435, 1638093435, NULL);
|
||||
INSERT INTO `__PREFIX__dictionary` VALUES (1, 0, '内容属2性', 'content', 1, '', 1, 1669805492, 1637738903, NULL);
|
||||
INSERT INTO `__PREFIX__dictionary` VALUES (2, 1, '头条', '1', 2, '', 1, 1669690446, 1638093403, NULL);
|
||||
INSERT INTO `__PREFIX__dictionary` VALUES (3, 1, '推荐', '2', 3, '', 1, 1669690444, 1638093425, NULL);
|
||||
INSERT INTO `__PREFIX__dictionary` VALUES (4, 1, '幻灯', '3', 4, '', 1, 1669690440, 1638093430, NULL);
|
||||
INSERT INTO `__PREFIX__dictionary` VALUES (5, 1, '滚动', '4', 5, '', 1, 1669690442, 1638093435, NULL);
|
||||
INSERT INTO `__PREFIX__dictionary` VALUES (6, 1, '图文', '5', 6, '', 1, 1638093456, 1638093456, NULL);
|
||||
INSERT INTO `__PREFIX__dictionary` VALUES (7, 1, '跳转', '6', 7, '', 1, 1638093435, 1638093435, NULL);
|
||||
INSERT INTO `__PREFIX__dictionary` VALUES (8, 0, '友链类型', 'friendlink', 8, '', 1, 1638093456, 1638093456, NULL);
|
||||
INSERT INTO `__PREFIX__dictionary` VALUES (8, 0, '友链2类型', 'friendlink', 8, '', 1, 1669805499, 1638093456, NULL);
|
||||
INSERT INTO `__PREFIX__dictionary` VALUES (9, 8, '资源', '1', 9, '', 1, 1638093430, 1638093430, NULL);
|
||||
INSERT INTO `__PREFIX__dictionary` VALUES (10, 8, '社区', '2', 10, '', 1, 1638093435, 1638093435, NULL);
|
||||
INSERT INTO `__PREFIX__dictionary` VALUES (11, 8, '合作伙伴', '3', 11, '', 1, 1659450310, 1638093456, NULL);
|
||||
@@ -589,7 +590,7 @@ CREATE TABLE `__PREFIX__system_log` (
|
||||
INDEX `method`(`method`) USING BTREE,
|
||||
INDEX `create_time`(`create_time`) USING BTREE,
|
||||
INDEX `line`(`line`) USING BTREE
|
||||
) ENGINE = InnoDB AUTO_INCREMENT = 953 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '系统日志表' ROW_FORMAT = DYNAMIC;
|
||||
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '系统日志表' ROW_FORMAT = DYNAMIC;
|
||||
|
||||
-- ----------------------------
|
||||
-- Records of __PREFIX__system_log
|
||||
@@ -651,7 +652,7 @@ CREATE TABLE `__PREFIX__user` (
|
||||
-- ----------------------------
|
||||
-- Records of __PREFIX__user
|
||||
-- ----------------------------
|
||||
INSERT INTO `__PREFIX__user` VALUES (1, 1, 'admin', '513bd12b00b512d0b879962b777b5560', 'wdONQC', NULL, NULL, '/upload/avatars/a0b923820dcc509a_100x100.png', '这个人很懒,什么都没有留下~ ', 'test@swiftadmin.net', NULL, '林自图', 0, '2022-11-04 20:04:55', '15253325632533', '河北省邯郸市中华区人民东路023号', '', 0, 100, 1983.56, '你家的宠物叫啥?', '23', 1, 1, 10001, 'NLBreFUsatIQnZVxYydOgM', NULL, NULL, NULL, NULL, NULL, NULL, 1, '127.0.0.1', 1669623633, 156, NULL, '1861775580', 1657332918, NULL);
|
||||
INSERT INTO `__PREFIX__user` VALUES (1, 1, 'aa', '513bd12b00b512d0b879962b777b5560', 'wdONQC', NULL, NULL, '/upload/avatars/a0b923820dcc509a_100x100.png', '这个人很懒,什么都没有留下~ ', 'test@swiftadmin.net', NULL, '林自图', 0, '2022-11-04 20:04:55', '15253325632533', '河北省邯郸市中华区人民东路023号', '', 0, 100, 1983.56, '你的幸运数字是?', 'aa', 1, 1, 10001, 'xDqmQGyBNUlwRXtkKPVCiM', NULL, NULL, NULL, NULL, NULL, NULL, 1, '127.0.0.1', 1670750078, 160, NULL, '1861775580', 1657332918, NULL);
|
||||
INSERT INTO `__PREFIX__user` VALUES (2, 1, 'faker', '513bd12b00b512d0b879962b777b5560', 'wdONQC', NULL, NULL, '/upload/avatars/a0b923820dcc509a_100x100.png', '这个人很懒,什么都没有留下~ ', 'test@swiftadmin.net', NULL, NULL, 0, NULL, NULL, '河北省邯郸市中华区人民东路023号', NULL, 0, 100, NULL, '你家的宠物叫啥?', '23', 1, 1, 10001, 'lLtSvJGyFQCVuTdjRIhqza', NULL, NULL, NULL, NULL, NULL, NULL, 1, '23.21.25.23', 1662098397, 131, NULL, '1861775580', 1657332918, NULL);
|
||||
|
||||
-- ----------------------------
|
||||
@@ -699,12 +700,11 @@ CREATE TABLE `__PREFIX__user_log` (
|
||||
`create_time` int(11) NULL DEFAULT NULL COMMENT '登录时间',
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
INDEX `user_ip`(`login_ip`) USING BTREE
|
||||
) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '用户登录记录表' ROW_FORMAT = DYNAMIC;
|
||||
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '用户登录记录表' ROW_FORMAT = DYNAMIC;
|
||||
|
||||
-- ----------------------------
|
||||
-- Records of __PREFIX__user_log
|
||||
-- ----------------------------
|
||||
INSERT INTO `__PREFIX__user_log` VALUES (1, 'admin', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36', 'Windows NT 10.0', 'Chrome/86.0.4240.198 Safari/537.36', 1, '登录成功', 1669623633);
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for __PREFIX__user_notice
|
||||
@@ -778,4 +778,4 @@ CREATE TABLE `__PREFIX__user_validate` (
|
||||
-- Records of __PREFIX__user_validate
|
||||
-- ----------------------------
|
||||
|
||||
SET FOREIGN_KEY_CHECKS = 1;
|
||||
SET FOREIGN_KEY_CHECKS = 1;
|
||||
@@ -49,7 +49,8 @@
|
||||
"yansongda/pay": "~3.1.0",
|
||||
"overtrue/wechat": "~5.0",
|
||||
"ext-json": "*",
|
||||
"ext-zip": "*"
|
||||
"ext-zip": "*",
|
||||
"ext-posix": "*"
|
||||
},
|
||||
"suggest": {
|
||||
"ext-event": "For better performance. "
|
||||
|
||||
@@ -33,14 +33,51 @@ class Monitor
|
||||
*/
|
||||
protected $_extensions = [];
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
public static $lockFile = __DIR__ . '/../runtime/monitor.lock';
|
||||
|
||||
/**
|
||||
* Pause monitor
|
||||
* @return void
|
||||
*/
|
||||
public static function pause()
|
||||
{
|
||||
file_put_contents(static::$lockFile, time());
|
||||
}
|
||||
|
||||
/**
|
||||
* Resume monitor
|
||||
* @return void
|
||||
*/
|
||||
public static function resume()
|
||||
{
|
||||
clearstatcache();
|
||||
if (is_file(static::$lockFile)) {
|
||||
unlink(static::$lockFile);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Whether monitor is paused
|
||||
* @return bool
|
||||
*/
|
||||
public static function isPaused(): bool
|
||||
{
|
||||
clearstatcache();
|
||||
return file_exists(static::$lockFile);
|
||||
}
|
||||
|
||||
/**
|
||||
* FileMonitor constructor.
|
||||
* @param $monitor_dir
|
||||
* @param $monitor_extensions
|
||||
* @param $memory_limit
|
||||
* @param array $options
|
||||
*/
|
||||
public function __construct($monitor_dir, $monitor_extensions, $memory_limit = null)
|
||||
public function __construct($monitor_dir, $monitor_extensions, array $options = [])
|
||||
{
|
||||
static::resume();
|
||||
$this->_paths = (array)$monitor_dir;
|
||||
$this->_extensions = $monitor_extensions;
|
||||
if (!Worker::getAllWorkers()) {
|
||||
@@ -50,23 +87,24 @@ class Monitor
|
||||
if (in_array('exec', $disable_functions, true)) {
|
||||
echo "\nMonitor file change turned off because exec() has been disabled by disable_functions setting in " . PHP_CONFIG_FILE_PATH . "/php.ini\n";
|
||||
} else {
|
||||
if (!Worker::$daemonize) {
|
||||
if ($options['enable_file_monitor'] ?? true) {
|
||||
Timer::add(1, function () {
|
||||
$this->checkAllFilesChange();
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
$memory_limit = $this->getMemoryLimit($memory_limit);
|
||||
if ($memory_limit && DIRECTORY_SEPARATOR === '/') {
|
||||
Timer::add(60, [$this, 'checkMemory'], [$memory_limit]);
|
||||
$memory_limit = $this->getMemoryLimit($options['memory_limit'] ?? null);
|
||||
if (($options['enable_memory_monitor'] ?? $memory_limit) && !str_starts_with(PHP_OS, 'WIN')) {
|
||||
Timer::add(10, [$this, 'checkMemory'], [$memory_limit]);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $monitor_dir
|
||||
* @return bool
|
||||
*/
|
||||
public function checkFilesChange($monitor_dir)
|
||||
public function checkFilesChange($monitor_dir): bool
|
||||
{
|
||||
static $last_mtime, $too_many_files_check;
|
||||
if (!$last_mtime) {
|
||||
@@ -75,7 +113,7 @@ class Monitor
|
||||
clearstatcache();
|
||||
if (!is_dir($monitor_dir)) {
|
||||
if (!is_file($monitor_dir)) {
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
$iterator = [new \SplFileInfo($monitor_dir)];
|
||||
} else {
|
||||
@@ -87,13 +125,13 @@ class Monitor
|
||||
foreach ($iterator as $file) {
|
||||
$count ++;
|
||||
/** var SplFileInfo $file */
|
||||
if (is_dir($file)) {
|
||||
if (is_dir($file->getRealPath())) {
|
||||
continue;
|
||||
}
|
||||
// check mtime
|
||||
if ($last_mtime < $file->getMTime() && in_array($file->getExtension(), $this->_extensions, true)) {
|
||||
$var = 0;
|
||||
exec(PHP_BINARY . " -l " . $file, $out, $var);
|
||||
exec('"'.PHP_BINARY . '" -l ' . $file, $out, $var);
|
||||
if ($var) {
|
||||
$last_mtime = $file->getMTime();
|
||||
continue;
|
||||
@@ -113,13 +151,18 @@ class Monitor
|
||||
echo "Monitor: There are too many files ($count files) in $monitor_dir which makes file monitoring very slow\n";
|
||||
$too_many_files_check = 1;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return bool
|
||||
*/
|
||||
public function checkAllFilesChange()
|
||||
public function checkAllFilesChange(): bool
|
||||
{
|
||||
if (static::isPaused()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
foreach ($this->_paths as $path) {
|
||||
if ($this->checkFilesChange($path)) {
|
||||
return true;
|
||||
@@ -134,6 +177,10 @@ class Monitor
|
||||
*/
|
||||
public function checkMemory($memory_limit)
|
||||
{
|
||||
if (static::isPaused() || $memory_limit <= 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
$ppid = posix_getppid();
|
||||
$children_file = "/proc/$ppid/task/$ppid/children";
|
||||
if (!is_file($children_file) || !($children = file_get_contents($children_file))) {
|
||||
@@ -151,7 +198,7 @@ class Monitor
|
||||
}
|
||||
$mem = (int)($mem / 1024);
|
||||
if ($mem >= $memory_limit) {
|
||||
posix_kill($pid, SIGINT);
|
||||
\posix_kill($pid, SIGINT);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -192,4 +239,4 @@ class Monitor
|
||||
}
|
||||
return $memory_limit;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user