diff --git a/composer.lock b/composer.lock index 2507d47e3..f7ea60b70 100644 --- a/composer.lock +++ b/composer.lock @@ -783,12 +783,12 @@ "source": { "type": "git", "url": "https://github.com/zoujingli/ThinkLibrary.git", - "reference": "265496e70f48b940c755aeee1c78443662231e80" + "reference": "575e803f69555599fbc0914b95012f978da3798f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zoujingli/ThinkLibrary/zipball/265496e70f48b940c755aeee1c78443662231e80", - "reference": "265496e70f48b940c755aeee1c78443662231e80", + "url": "https://api.github.com/repos/zoujingli/ThinkLibrary/zipball/575e803f69555599fbc0914b95012f978da3798f", + "reference": "575e803f69555599fbc0914b95012f978da3798f", "shasum": "", "mirrors": [ { @@ -832,7 +832,7 @@ ], "description": "ThinkPHP v6.0 Development Library", "homepage": "http://framework.thinkadmin.top", - "time": "2019-11-26T06:05:05+00:00" + "time": "2019-11-27T09:48:45+00:00" } ], "packages-dev": [], diff --git a/public/static/self/my_plugs_files b/public/static/self/my_plugs_files deleted file mode 100644 index e69de29bb..000000000 diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json index 1a1410b97..91a2467ec 100644 --- a/vendor/composer/installed.json +++ b/vendor/composer/installed.json @@ -805,12 +805,12 @@ "source": { "type": "git", "url": "https://github.com/zoujingli/ThinkLibrary.git", - "reference": "265496e70f48b940c755aeee1c78443662231e80" + "reference": "575e803f69555599fbc0914b95012f978da3798f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zoujingli/ThinkLibrary/zipball/265496e70f48b940c755aeee1c78443662231e80", - "reference": "265496e70f48b940c755aeee1c78443662231e80", + "url": "https://api.github.com/repos/zoujingli/ThinkLibrary/zipball/575e803f69555599fbc0914b95012f978da3798f", + "reference": "575e803f69555599fbc0914b95012f978da3798f", "shasum": "", "mirrors": [ { @@ -826,7 +826,7 @@ "ext-json": "*", "topthink/framework": "^6.0" }, - "time": "2019-11-26T06:05:05+00:00", + "time": "2019-11-27T09:48:45+00:00", "type": "library", "extra": { "think": { diff --git a/vendor/services.php b/vendor/services.php index 5aa9b806b..a9f206d09 100644 --- a/vendor/services.php +++ b/vendor/services.php @@ -1,5 +1,5 @@ 'think\\app\\Service', diff --git a/vendor/zoujingli/think-library/src/Controller.php b/vendor/zoujingli/think-library/src/Controller.php index 0eafd8083..4298abe1e 100644 --- a/vendor/zoujingli/think-library/src/Controller.php +++ b/vendor/zoujingli/think-library/src/Controller.php @@ -35,7 +35,7 @@ use think\Request; * Class Controller * @package think\admin */ -class Controller extends \stdClass +abstract class Controller extends \stdClass { /** diff --git a/vendor/zoujingli/think-library/src/Helper.php b/vendor/zoujingli/think-library/src/Helper.php index 2b5343d30..c1d64afa3 100644 --- a/vendor/zoujingli/think-library/src/Helper.php +++ b/vendor/zoujingli/think-library/src/Helper.php @@ -60,7 +60,7 @@ abstract class Helper * @param string|Query $dbQuery * @return Query */ - protected function buildQuery($dbQuery) + protected function buildQuery($dbQuery): Query { return is_string($dbQuery) ? $this->app->db->name($dbQuery) : $dbQuery; } diff --git a/vendor/zoujingli/think-library/src/Storage.php b/vendor/zoujingli/think-library/src/Storage.php index e837ced02..472e8d4b1 100644 --- a/vendor/zoujingli/think-library/src/Storage.php +++ b/vendor/zoujingli/think-library/src/Storage.php @@ -138,7 +138,7 @@ abstract class Storage * 获取所有文件扩展的MINES * @return array */ - public static function mimes() + public static function mimes(): array { static $mimes = []; if (count($mimes) > 0) return $mimes; diff --git a/vendor/zoujingli/think-library/src/command/Install.php b/vendor/zoujingli/think-library/src/command/Install.php index 2128cc054..388bdfcb8 100644 --- a/vendor/zoujingli/think-library/src/command/Install.php +++ b/vendor/zoujingli/think-library/src/command/Install.php @@ -52,12 +52,20 @@ class Install extends Command */ protected $bind = [ 'admin' => [ - 'rules' => ['think', 'app/admin'], + 'rules' => [ + 'think', + 'app/admin', + ], 'ignore' => [], ], 'static' => [ - 'rules' => ['public/static'], - 'ignore' => ['public/static/self'], + 'rules' => [ + 'public/static/plugs', + 'public/static/theme', + 'public/static/admin.js', + 'public/static/login.js', + ], + 'ignore' => [], ], ]; @@ -76,7 +84,7 @@ class Install extends Command { $this->name = trim($input->getArgument('name')); if (empty($this->name)) { - $this->output->error('在线安装的模块名称不能为空!'); + $this->output->writeln('在线安装的模块名称不能为空!'); } else { if (isset($this->bind[$this->name])) { $this->rules = empty($this->bind[$this->name]['rules']) ? [] : $this->bind[$this->name]['rules']; @@ -84,7 +92,7 @@ class Install extends Command $this->installFile(); $this->installData(); } else { - $this->output->error("指定模块 {$this->name} 未配置安装规则!"); + $this->output->writeln("指定模块 {$this->name} 未配置安装规则!"); } } } @@ -92,17 +100,17 @@ class Install extends Command protected function installFile() { $data = InstallService::instance()->grenerateDifference($this->rules, $this->ignore); - if (empty($data)) $this->output->info('文件比对一致不需更新文件!'); + if (empty($data)) $this->output->writeln('文件比对一致不需更新文件!'); else foreach ($data as $file) { list($state, $mode, $name) = InstallService::instance()->fileSynchronization($file); if ($state) { - if ($mode === 'add') $this->output->info("--- 下载 {$name} 添加成功"); - if ($mode === 'mod') $this->output->info("--- 下载 {$name} 更新成功"); - if ($mode === 'del') $this->output->info("--- 删除 {$name} 文件成功"); + if ($mode === 'add') $this->output->writeln("--- 下载 {$name} 添加成功"); + if ($mode === 'mod') $this->output->writeln("--- 下载 {$name} 更新成功"); + if ($mode === 'del') $this->output->writeln("--- 删除 {$name} 文件成功"); } else { - if ($mode === 'add') $this->output->error("--- 下载 {$name} 添加失败"); - if ($mode === 'mod') $this->output->error("--- 下载 {$name} 更新失败"); - if ($mode === 'del') $this->output->error("--- 删除 {$name} 文件失败"); + if ($mode === 'add') $this->output->writeln("--- 下载 {$name} 添加失败"); + if ($mode === 'mod') $this->output->writeln("--- 下载 {$name} 更新失败"); + if ($mode === 'del') $this->output->writeln("--- 删除 {$name} 文件失败"); } } } diff --git a/vendor/zoujingli/think-library/src/queue/ListenQueue.php b/vendor/zoujingli/think-library/src/queue/ListenQueue.php index be7a80dcc..f606996d4 100644 --- a/vendor/zoujingli/think-library/src/queue/ListenQueue.php +++ b/vendor/zoujingli/think-library/src/queue/ListenQueue.php @@ -49,24 +49,37 @@ class ListenQueue extends Command if (($process = ProcessService::instance())->iswin()) { $this->setProcessTitle("ThinkAdmin 监听主进程 {$process->version()}"); } - $output->comment('============ 任务监听中 ============'); + $output->writeln('============ 任务监听中 ============'); while (true) { - foreach ($this->app->db->name('SystemQueue')->where([['status', '=', '1'], ['exec_time', '<=', time()]])->order('exec_time asc')->limit(100)->select() as $vo) { + $where = [['status', '=', '1'], ['exec_time', '<=', time()]]; + $this->app->db->name('SystemQueue')->where($where)->order('exec_time asc')->limit(100)->select()->each(function ($vo) use ($process, $output) { try { - $this->app->db->name('SystemQueue')->where(['code' => $vo['code']])->update(['status' => '2', 'enter_time' => time(), 'exec_desc' => '', 'attempts' => $vo['attempts'] + 1]); + $this->update($vo['code'], ['status' => '2', 'enter_time' => time(), 'exec_desc' => '', 'attempts' => $vo['attempts'] + 1]); if ($process->query($command = $process->think("xtask:_work {$vo['code']} -"))) { - $output->comment("正在执行 -> [{$vo['code']}] {$vo['title']}"); + $output->writeln("正在执行 -> [{$vo['code']}] {$vo['title']}"); } else { $process->create($command); - $output->info("创建成功 -> [{$vo['code']}] {$vo['title']}"); + $output->writeln("创建成功 -> [{$vo['code']}] {$vo['title']}"); } } catch (\Exception $e) { - $this->app->db->name('SystemQueue')->where(['code' => $vo['code']])->update(['status' => '4', 'outer_time' => time(), 'exec_desc' => $e->getMessage()]); - $output->error("创建失败 -> [{$vo['code']}] {$vo['title']},{$e->getMessage()}"); + $this->update($vo['code'], ['status' => '4', 'outer_time' => time(), 'exec_desc' => $e->getMessage()]); + $output->writeln("创建失败 -> [{$vo['code']}] {$vo['title']},{$e->getMessage()}"); } - } + }); sleep(1); } } + /** + * 更新任务数据 + * @param mixed $code 任务编号 + * @param mixed $data 任务数据 + * @return boolean + * @throws \think\db\exception\DbException + */ + protected function update($code, array $data = []) + { + return $this->app->db->name('SystemQueue')->where(['code' => $code])->update($data); + } + } diff --git a/vendor/zoujingli/think-library/src/queue/StartQueue.php b/vendor/zoujingli/think-library/src/queue/StartQueue.php index 7346bd7e5..ffbc4b7b4 100644 --- a/vendor/zoujingli/think-library/src/queue/StartQueue.php +++ b/vendor/zoujingli/think-library/src/queue/StartQueue.php @@ -47,14 +47,14 @@ class StartQueue extends Command $process = ProcessService::instance(); $command = $process->think("xtask:listen"); if (count($result = $process->query($command)) > 0) { - $output->info("监听主进程{$result['0']['pid']}已经启动!"); + $output->writeln("监听主进程{$result['0']['pid']}已经启动!"); } else { $process->create($command); sleep(1); if (count($result = $process->query($command)) > 0) { - $output->info("监听主进程{$result['0']['pid']}启动成功!"); + $output->writeln("监听主进程{$result['0']['pid']}启动成功!"); } else { - $output->error('监听主进程创建失败!'); + $output->writeln('监听主进程创建失败!'); } } } diff --git a/vendor/zoujingli/think-library/src/queue/StateQueue.php b/vendor/zoujingli/think-library/src/queue/StateQueue.php index d1d687385..108453d0d 100644 --- a/vendor/zoujingli/think-library/src/queue/StateQueue.php +++ b/vendor/zoujingli/think-library/src/queue/StateQueue.php @@ -45,9 +45,9 @@ class StateQueue extends Command $process = ProcessService::instance(); $command = $process->think('xtask:listen'); if (count($result = $process->query($command)) > 0) { - $output->info("异步任务监听主进程{$result[0]['pid']}正在运行..."); + $output->writeln("任务监听主进程{$result[0]['pid']}正在运行..."); } else { - $output->error("异步任务监听主进程没有运行哦!"); + $output->writeln("任务监听主进程没有运行哦!"); } } } diff --git a/vendor/zoujingli/think-library/src/service/ProcessService.php b/vendor/zoujingli/think-library/src/service/ProcessService.php index ce22167b1..1795ff82b 100644 --- a/vendor/zoujingli/think-library/src/service/ProcessService.php +++ b/vendor/zoujingli/think-library/src/service/ProcessService.php @@ -53,10 +53,9 @@ class ProcessService extends Service public function create($command) { if ($this->iswin()) { - $command = __DIR__ . "/bin/console.exe {$command}"; - pclose(popen("wmic process call create \"{$command}\"", 'r')); + $this->exec(__DIR__ . "/bin/console.exe {$command}"); } else { - pclose(popen("{$command} &", 'r')); + $this->exec("{$command} &"); } return $this; } @@ -70,14 +69,14 @@ class ProcessService extends Service { $list = []; if ($this->iswin()) { - $result = $this->exec('wmic process where name="php.exe" get processid,CommandLine'); - foreach (explode("\n", $result) as $line) if ($this->_issub($line, $command) !== false) { + $lines = $this->exec('wmic process where name="php.exe" get processid,CommandLine', true); + foreach ($lines as $line) if ($this->_issub($line, $command) !== false) { $attr = explode(' ', $this->_space($line)); $list[] = ['pid' => array_pop($attr), 'cmd' => join(' ', $attr)]; } } else { - $result = $this->exec("ps ax|grep -v grep|grep \"{$command}\""); - foreach (explode("\n", $result) as $line) if ($this->_issub($line, $command) !== false) { + $lines = $this->exec("ps ax|grep -v grep|grep \"{$command}\"", true); + foreach ($lines as $line) if ($this->_issub($line, $command) !== false) { $attr = explode(' ', $this->_space($line)); list($pid) = [array_shift($attr), array_shift($attr), array_shift($attr), array_shift($attr)]; $list[] = ['pid' => $pid, 'cmd' => join(' ', $attr)]; @@ -104,11 +103,13 @@ class ProcessService extends Service /** * 立即执行指令 * @param string $command 执行指令 - * @return string + * @param boolean $outarr 返回类型 + * @return string|array */ - public function exec($command) + public function exec($command, $outarr = false) { - return shell_exec($command); + exec($command, $output); + return $outarr ? $output : join("\n", $output); } /** diff --git a/vendor/zoujingli/think-library/src/storage/QiniuStorage.php b/vendor/zoujingli/think-library/src/storage/QiniuStorage.php index f0b10441b..06f5aecd8 100644 --- a/vendor/zoujingli/think-library/src/storage/QiniuStorage.php +++ b/vendor/zoujingli/think-library/src/storage/QiniuStorage.php @@ -162,28 +162,6 @@ class QiniuStorage extends Storage return isset($data['md5']) ? ['file' => $name, 'url' => $this->url($name, $safe), 'hash' => $data['md5'], 'key' => $name] : []; } - /** - * URL安全的Base64编码 - * @param string $content - * @return string - */ - private function safeBase64($content) - { - return str_replace(['+', '/'], ['-', '_'], base64_encode($content)); - } - - /** - * 获取对象管理凭证 - * @param string $name 文件名称 - * @param string $type 操作类型 - * @return array - */ - private function getAccessToken($name, $type = 'state') - { - $EncodedEntryURI = $this->safeBase64("{$this->bucket}:{$name}"); - return [$EncodedEntryURI, "{$this->accessKey}:{$this->safeBase64(hash_hmac('sha1', "/{$type}/{$EncodedEntryURI}\n", $this->secretKey, true))}"]; - } - /** * 获取文件上传地址 * @return string @@ -225,4 +203,26 @@ class QiniuStorage extends Storage ])); return "{$this->accessKey}:{$this->safeBase64(hash_hmac('sha1', $policy, $this->secretKey, true))}:{$policy}"; } + + /** + * URL安全的Base64编码 + * @param string $content + * @return string + */ + private function safeBase64($content) + { + return str_replace(['+', '/'], ['-', '_'], base64_encode($content)); + } + + /** + * 获取对象管理凭证 + * @param string $name 文件名称 + * @param string $type 操作类型 + * @return array + */ + private function getAccessToken($name, $type = 'state') + { + $EncodedEntryURI = $this->safeBase64("{$this->bucket}:{$name}"); + return [$EncodedEntryURI, "{$this->accessKey}:{$this->safeBase64(hash_hmac('sha1', "/{$type}/{$EncodedEntryURI}\n", $this->secretKey, true))}"]; + } } \ No newline at end of file