ComposerUpdate

This commit is contained in:
Anyon 2020-08-12 15:18:57 +08:00
parent 8b7ad2c850
commit f141a74093
4 changed files with 57 additions and 59 deletions

8
composer.lock generated
View File

@ -937,12 +937,12 @@
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/zoujingli/ThinkLibrary.git", "url": "https://github.com/zoujingli/ThinkLibrary.git",
"reference": "a98a370bc0619346f72a753e920df6b659bfc48d" "reference": "947f3bbdf949e1d341258f778ea0ad91153350a7"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/zoujingli/ThinkLibrary/zipball/a98a370bc0619346f72a753e920df6b659bfc48d", "url": "https://api.github.com/repos/zoujingli/ThinkLibrary/zipball/947f3bbdf949e1d341258f778ea0ad91153350a7",
"reference": "a98a370bc0619346f72a753e920df6b659bfc48d", "reference": "947f3bbdf949e1d341258f778ea0ad91153350a7",
"shasum": "", "shasum": "",
"mirrors": [ "mirrors": [
{ {
@ -986,7 +986,7 @@
], ],
"description": "ThinkPHP v6.0 Development Library", "description": "ThinkPHP v6.0 Development Library",
"homepage": "http://thinkadmin.top", "homepage": "http://thinkadmin.top",
"time": "2020-08-05T02:56:06+00:00" "time": "2020-08-12T03:01:11+00:00"
}, },
{ {
"name": "zoujingli/wechat-developer", "name": "zoujingli/wechat-developer",

View File

@ -963,12 +963,12 @@
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/zoujingli/ThinkLibrary.git", "url": "https://github.com/zoujingli/ThinkLibrary.git",
"reference": "a98a370bc0619346f72a753e920df6b659bfc48d" "reference": "947f3bbdf949e1d341258f778ea0ad91153350a7"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/zoujingli/ThinkLibrary/zipball/a98a370bc0619346f72a753e920df6b659bfc48d", "url": "https://api.github.com/repos/zoujingli/ThinkLibrary/zipball/947f3bbdf949e1d341258f778ea0ad91153350a7",
"reference": "a98a370bc0619346f72a753e920df6b659bfc48d", "reference": "947f3bbdf949e1d341258f778ea0ad91153350a7",
"shasum": "", "shasum": "",
"mirrors": [ "mirrors": [
{ {
@ -984,7 +984,7 @@
"ext-json": "*", "ext-json": "*",
"topthink/framework": "^6.0" "topthink/framework": "^6.0"
}, },
"time": "2020-08-05T02:56:06+00:00", "time": "2020-08-12T03:01:11+00:00",
"type": "library", "type": "library",
"extra": { "extra": {
"think": { "think": {

2
vendor/services.php vendored
View File

@ -1,5 +1,5 @@
<?php <?php
// This file is automatically generated at:2020-08-12 09:59:33 // This file is automatically generated at:2020-08-12 14:26:09
declare (strict_types = 1); declare (strict_types = 1);
return array ( return array (
0 => 'think\\admin\\Library', 0 => 'think\\admin\\Library',

View File

@ -68,7 +68,7 @@ class Queue extends Command
{ {
$action = $this->input->hasOption('daemon') ? 'start' : $input->getArgument('action'); $action = $this->input->hasOption('daemon') ? 'start' : $input->getArgument('action');
if (method_exists($this, $method = "{$action}Action")) return $this->$method(); if (method_exists($this, $method = "{$action}Action")) return $this->$method();
$this->output->error("Wrong operation, Allow stop|start|status|query|listen|clean|dorun|webstop|webstart|webstatus"); $this->output->error(">> Wrong operation, Allow stop|start|status|query|listen|clean|dorun|webstop|webstart|webstatus");
} }
/** /**
@ -76,12 +76,12 @@ class Queue extends Command
*/ */
protected function webStopAction() protected function webStopAction()
{ {
$root = "{$this->app->getRootPath()}public" . DIRECTORY_SEPARATOR; $root = $this->app->getRootPath() . 'public' . DIRECTORY_SEPARATOR;
if (count($result = $this->process->query("-t {$root} {$root}router.php")) < 1) { if (count($result = $this->process->query("-t {$root} {$root}router.php")) < 1) {
$this->output->writeln("There are no WebServer processes to stop"); $this->output->writeln(">> There are no WebServer processes to stop");
} else foreach ($result as $item) { } else foreach ($result as $item) {
$this->process->close($item['pid']); $this->process->close($item['pid']);
$this->output->writeln("Successfully sent end signal to process {$item['pid']}"); $this->output->writeln(">> Successfully sent end signal to process {$item['pid']}");
} }
} }
@ -92,22 +92,19 @@ class Queue extends Command
{ {
$port = $this->input->getOption('port') ?: '80'; $port = $this->input->getOption('port') ?: '80';
$host = $this->input->getOption('host') ?: '127.0.0.1'; $host = $this->input->getOption('host') ?: '127.0.0.1';
$root = "{$this->app->getRootPath()}public" . DIRECTORY_SEPARATOR; $root = $this->app->getRootPath() . 'public' . DIRECTORY_SEPARATOR;
$command = "php -S {$host}:{$port} -t {$root} {$root}router.php"; $command = "php -S {$host}:{$port} -t {$root} {$root}router.php";
$this->output->highlight("># {$command}");
if (count($result = $this->process->query($command)) > 0) { if (count($result = $this->process->query($command)) > 0) {
if ($this->process->iswin()) { if ($this->process->iswin()) $this->process->exec("start http://{$host}:{$port}");
$this->process->exec("start http://{$host}:{$port}"); $this->output->writeln(">> WebServer process already exist for pid {$result[0]['pid']}");
}
$this->output->writeln("WebServer process already exist for pid {$result[0]['pid']}");
} else { } else {
[$this->process->create($command), usleep(2000)]; [$this->process->create($command), usleep(2000)];
if (count($result = $this->process->query($command)) > 0) { if (count($result = $this->process->query($command)) > 0) {
$this->output->writeln("WebServer process started successfully for pid {$result[0]['pid']}"); $this->output->writeln(">> WebServer process started successfully for pid {$result[0]['pid']}");
if ($this->process->iswin()) { if ($this->process->iswin()) $this->process->exec("start http://{$host}:{$port}");
$this->process->exec("start http://{$host}:{$port}");
}
} else { } else {
$this->output->writeln('WebServer process failed to start'); $this->output->writeln('>> WebServer process failed to start');
} }
} }
} }
@ -117,12 +114,12 @@ class Queue extends Command
*/ */
protected function webStatusAction() protected function webStatusAction()
{ {
$root = "{$this->app->getRootPath()}public" . DIRECTORY_SEPARATOR; $root = $this->app->getRootPath() . 'public' . DIRECTORY_SEPARATOR;
if (count($result = $this->process->query("-t {$root} {$root}router.php")) > 0) { if (count($result = $this->process->query("-t {$root} {$root}router.php")) > 0) {
$this->output->info("WebServer process {$result[0]['pid']} running"); $this->output->highlight("># {$result[0]['cmd']}");
$this->output->write("># {$result[0]['cmd']}"); $this->output->writeln(">> WebServer process {$result[0]['pid']} running");
} else { } else {
$this->output->warning("The WebServer process is not running"); $this->output->writeln(">> The WebServer process is not running");
} }
} }
@ -133,10 +130,10 @@ class Queue extends Command
{ {
$keyword = $this->process->think('xadmin:queue'); $keyword = $this->process->think('xadmin:queue');
if (count($result = $this->process->query($keyword)) < 1) { if (count($result = $this->process->query($keyword)) < 1) {
$this->output->writeln("There are no task processes to stop"); $this->output->writeln(">> There are no task processes to stop");
} else foreach ($result as $item) { } else foreach ($result as $item) {
$this->process->close($item['pid']); $this->process->close($item['pid']);
$this->output->writeln("Successfully sent end signal to process {$item['pid']}"); $this->output->writeln(">> Successfully sent end signal to process {$item['pid']}");
} }
} }
@ -146,15 +143,16 @@ class Queue extends Command
protected function startAction() protected function startAction()
{ {
$this->app->db->name($this->table)->count(); $this->app->db->name($this->table)->count();
$command = $this->process->think("xadmin:queue listen"); $command = $this->process->think('xadmin:queue listen');
$this->output->highlight("># {$command}");
if (count($result = $this->process->query($command)) > 0) { if (count($result = $this->process->query($command)) > 0) {
$this->output->writeln("Asynchronous daemons already exist for pid {$result[0]['pid']}"); $this->output->writeln(">> Asynchronous daemons already exist for pid {$result[0]['pid']}");
} else { } else {
[$this->process->create($command), usleep(1000)]; [$this->process->create($command), usleep(1000)];
if (count($result = $this->process->query($command)) > 0) { if (count($result = $this->process->query($command)) > 0) {
$this->output->writeln("Asynchronous daemons started successfully for pid {$result[0]['pid']}"); $this->output->writeln(">> Asynchronous daemons started successfully for pid {$result[0]['pid']}");
} else { } else {
$this->output->writeln("Asynchronous daemons failed to start"); $this->output->writeln(">> Asynchronous daemons failed to start");
} }
} }
} }
@ -164,11 +162,11 @@ class Queue extends Command
*/ */
protected function queryAction() protected function queryAction()
{ {
$result = $this->process->query($this->process->think("xadmin:queue")); $list = $this->process->query($this->process->think("xadmin:queue"));
if (count($result) > 0) foreach ($result as $item) { if (count($list) > 0) foreach ($list as $item) {
$this->output->writeln("{$item['pid']}\t{$item['cmd']}"); $this->output->writeln(">> {$item['pid']}\t{$item['cmd']}");
} else { } else {
$this->output->writeln('No related task process found'); $this->output->writeln('>> No related task process found');
} }
} }
@ -210,14 +208,17 @@ class Queue extends Command
{ {
$command = $this->process->think('xadmin:queue listen'); $command = $this->process->think('xadmin:queue listen');
if (count($result = $this->process->query($command)) > 0) { if (count($result = $this->process->query($command)) > 0) {
$this->output->info("Listening for main process {$result[0]['pid']} running"); $this->output->writeln("Listening for main process {$result[0]['pid']} running");
} else { } else {
$this->output->warning("The Listening main process is not running"); $this->output->writeln("The Listening main process is not running");
} }
} }
/** /**
* 立即监听任务 * 立即监听任务
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\DbException
* @throws \think\db\exception\ModelNotFoundException
*/ */
protected function listenAction() protected function listenAction()
{ {
@ -231,25 +232,22 @@ class Queue extends Command
$this->output->writeln('============== LISTENING =============='); $this->output->writeln('============== LISTENING ==============');
while (true) { while (true) {
[$start, $where] = [microtime(true), [['status', '=', 1], ['exec_time', '<=', time()]]]; [$start, $where] = [microtime(true), [['status', '=', 1], ['exec_time', '<=', time()]]];
$this->app->db->name($this->table)->where($where)->order('exec_time asc')->chunk(100, function (Collection $result) { foreach ($this->app->db->name($this->table)->where($where)->order('exec_time asc')->select()->toArray() as $vo) try {
foreach ($result->toArray() as $vo) try {
$command = $this->process->think("xadmin:queue dorun {$vo['code']} -"); $command = $this->process->think("xadmin:queue dorun {$vo['code']} -");
$this->output->highlight("># {$command}");
if (count($this->process->query($command)) > 0) { if (count($this->process->query($command)) > 0) {
$this->output->writeln("Already in progress -> [{$vo['code']}] {$vo['title']}"); $this->output->writeln(">> Already in progress -> [{$vo['code']}] {$vo['title']}");
} else { } else {
$this->process->create($command); $this->process->create($command);
$this->output->writeln("Created new process -> [{$vo['code']}] {$vo['title']}"); $this->output->writeln(">> Created new process -> [{$vo['code']}] {$vo['title']}");
} }
} catch (\Exception $exception) { } catch (\Exception $exception) {
$this->app->db->name($this->table)->where(['code' => $vo['code']])->update([ $this->app->db->name($this->table)->where(['code' => $vo['code']])->update([
'status' => 4, 'outer_time' => time(), 'exec_desc' => $exception->getMessage(), 'status' => 4, 'outer_time' => time(), 'exec_desc' => $exception->getMessage(),
]); ]);
$this->output->error("Execution failed -> [{$vo['code']}] {$vo['title']}{$exception->getMessage()}"); $this->output->error(">> Execution failed -> [{$vo['code']}] {$vo['title']}{$exception->getMessage()}");
}
});
if (microtime(true) - $start < 0.5000) {
usleep(500000);
} }
if (microtime(true) - $start < 0.5000) usleep(500000);
} }
} }
@ -309,14 +307,14 @@ class Queue extends Command
* 修改当前任务状态 * 修改当前任务状态
* @param integer $status 任务状态 * @param integer $status 任务状态
* @param string $message 消息内容 * @param string $message 消息内容
* @param boolean $issplit 是否分隔 * @param boolean $isSplit 是否分隔
* @throws \think\db\exception\DbException * @throws \think\db\exception\DbException
*/ */
protected function updateQueue($status, $message, $issplit = true) protected function updateQueue($status, $message, $isSplit = true)
{ {
// 更新当前任务 // 更新当前任务
$info = trim(is_string($message) ? $message : ''); $info = trim(is_string($message) ? $message : '');
$desc = $issplit ? explode("\n", $info) : [$message]; $desc = $isSplit ? explode("\n", $info) : [$message];
$this->app->db->name($this->table)->strict(false)->where(['code' => $this->code])->update([ $this->app->db->name($this->table)->strict(false)->where(['code' => $this->code])->update([
'status' => $status, 'outer_time' => microtime(true), 'exec_pid' => getmypid(), 'exec_desc' => $desc[0], 'status' => $status, 'outer_time' => microtime(true), 'exec_pid' => getmypid(), 'exec_desc' => $desc[0],
]); ]);