diff --git a/extend/base/common/command/TimerBase.php b/extend/base/common/command/TimerBase.php index 1e3391b..d03e1d4 100644 --- a/extend/base/common/command/TimerBase.php +++ b/extend/base/common/command/TimerBase.php @@ -105,6 +105,11 @@ class TimerBase extends Command public function runParallel() { + // 重新构造命令行参数,以便兼容workerman的命令 + global $argv; + $argv = []; + array_unshift($argv, 'think', 'start'); + $host = $this->host; $site_host = $this->siteHost; $output = $this->output; @@ -119,10 +124,16 @@ class TimerBase extends Command Timer::add(1, function () use ($worker, $host, $site_host, $output, $input) { $request_list = $worker->timerRequestList; foreach ($request_list as $request_item) { + $output->writeln(date('Y-m-d H:i:s') . ': build site request async:' . $request_item['target']); if (!isset($request_item['is_running'])) { $request_item['is_running'] = false; } + if ($request_item['is_running']) { + $output->writeln('进行中,跳过'); + continue; + } + if (!isset($request_item['last_run_time'])) { $request_item['last_run_time'] = 0; } @@ -134,15 +145,13 @@ class TimerBase extends Command $request_item['is_running'] = true; $request_item['last_run_time'] = time(); - $output->writeln(date('Y-m-d H:i:s') . ': build site request async:' . $request_item['target']); - // $options = [ - 'max_conn_per_addr' => Config::get('timer.max_conn_per_addr', 1000), - 'keepalive_timeout' => Config::get('timer.keepalive_timeout', 86400), - 'connect_timeout' => Config::get('timer.connect_timeout', 86400), - 'timeout' => Config::get('timer.timeout', 86400), + 'max_conn_per_addr' => Config::get('timer.max_conn_per_addr', 1000), + 'keepalive_timeout' => Config::get('timer.keepalive_timeout', 86400), + 'connect_timeout' => Config::get('timer.connect_timeout', 86400), + 'timeout' => Config::get('timer.timeout', 86400), ]; $http = new HttpClient($options); @@ -151,13 +160,13 @@ class TimerBase extends Command 'Host' => $site_host, 'Accept' => 'application/json,text/plain', ], - 'success' => function ($response) use ($request_item) { + 'success' => function ($response) use ($request_item, $output) { $request_item['is_running'] = false; - echo $response->getBody(); + $output->writeln($response->getBody()); }, - 'error' => function ($exception) use ($request_item) { + 'error' => function ($exception) use ($request_item, $output) { $request_item['is_running'] = false; - echo $exception; + $output->writeln($exception); }, ]); }