From 0708d4ce61f3a30a6d9c665075af5d6b3b32866a Mon Sep 17 00:00:00 2001 From: yanwenwu Date: Thu, 23 Jan 2020 21:26:30 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9Ews=20worker=E5=91=BD=E4=BB=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/BaseController.php | 3 - .../command/worker/WsWorkerCommand.php | 76 +++++++++++++++++++ 2 files changed, 76 insertions(+), 3 deletions(-) create mode 100644 extend/catcher/command/worker/WsWorkerCommand.php diff --git a/app/BaseController.php b/app/BaseController.php index 3d7995e..bfd74d9 100644 --- a/app/BaseController.php +++ b/app/BaseController.php @@ -3,11 +3,8 @@ declare (strict_types = 1); namespace app; -use catcher\CatchAdmin; use think\App; use think\exception\ValidateException; -use think\facade\View; -use think\helper\Str; use think\Validate; /** diff --git a/extend/catcher/command/worker/WsWorkerCommand.php b/extend/catcher/command/worker/WsWorkerCommand.php new file mode 100644 index 0000000..c25dc90 --- /dev/null +++ b/extend/catcher/command/worker/WsWorkerCommand.php @@ -0,0 +1,76 @@ +setName('ws:server') + ->addArgument('option', Argument::OPTIONAL, '[start|reload|stop|restart|reload|status|connections]', 'start') + ->addOption('mode', '-m', Option::VALUE_REQUIRED, 'worker start mode') + ->addOption('address', '-a',Option::VALUE_REQUIRED, 'listen address, like \'127.0.0.1:9090\'') + ->setDescription('start websocket server, default listen 127.0.0.1 port 10001'); + } + + protected function execute(Input $input, Output $output) + { + $this->setWokrermanCommnd(); + + $this->start(); + } + + protected function start() + { + $ws = new Worker(sprintf('http://%s', $this->getAddress())); + + $ws->count = 7; + + $ws->runAll(); + } + + /** + * @return string + * @author JaguarJack + * @email njphper@gmail.com + * @time 2020/1/23 + */ + protected function getAddress() + { + return $this->input->getOption('address') ? : $this->address; + } + + /** + * + */ + protected function setWokrermanCommnd() + { + global $argv; + + $option = $this->input->getArgument('option'); + + $mode = $this->input->getOption('mode'); + + if ($option) { + array_unshift($argv, $mode); + } + + array_unshift($argv, $option); + + array_unshift($argv, 'catchWorker'); + } +}