新增守护控制选项
This commit is contained in:
parent
c84d5a2a17
commit
b8de40a60f
@ -4,10 +4,11 @@ declare (strict_types = 1);
|
|||||||
|
|
||||||
namespace catcher\command;
|
namespace catcher\command;
|
||||||
|
|
||||||
use catcher\library\crontab\ManageProcess;
|
use catcher\library\crontab\Master;
|
||||||
use think\console\Command;
|
use think\console\Command;
|
||||||
use think\console\Input;
|
use think\console\Input;
|
||||||
use think\console\input\Argument;
|
use think\console\input\Argument;
|
||||||
|
use think\console\input\Option;
|
||||||
use think\console\Output;
|
use think\console\Output;
|
||||||
|
|
||||||
class CatchScheduleCommand extends Command
|
class CatchScheduleCommand extends Command
|
||||||
@ -17,36 +18,44 @@ class CatchScheduleCommand extends Command
|
|||||||
// 指令配置
|
// 指令配置
|
||||||
$this->setName('catch:schedule')
|
$this->setName('catch:schedule')
|
||||||
->addArgument('option', Argument::OPTIONAL, '[start|reload|stop|restart||status]', 'start')
|
->addArgument('option', Argument::OPTIONAL, '[start|reload|stop|restart||status]', 'start')
|
||||||
|
->addOption('daemon', '-d', Option::VALUE_NONE, 'daemon mode')
|
||||||
->setDescription('start task schedule');
|
->setDescription('start task schedule');
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function execute(Input $input, Output $output)
|
protected function execute(Input $input, Output $output)
|
||||||
{
|
{
|
||||||
$process = new ManageProcess();
|
if (!extension_loaded('swoole')) {
|
||||||
$option = $input->getArgument('option');
|
$output->error('Swoole Extension Not Installed! You can use [pecl] to install swoole');
|
||||||
$this->{$option}($process);
|
} else {
|
||||||
|
$master = new Master();
|
||||||
|
if ($this->input->hasOption('daemon')) {
|
||||||
|
$master->daemon();
|
||||||
|
}
|
||||||
|
$this->{$input->getArgument('option')}($master);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 进程启动
|
* 进程启动
|
||||||
*
|
*
|
||||||
* @time 2020年07月07日
|
* @time 2020年07月07日
|
||||||
* @param ManageProcess $process
|
* @param Master $process
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
protected function start(ManageProcess $process)
|
protected function start(Master $process)
|
||||||
{
|
{
|
||||||
$process->start();
|
$process->start();
|
||||||
|
$this->output->info($process->renderProcessesStatusToString());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 状态输出
|
* 状态输出
|
||||||
*
|
*
|
||||||
* @time 2020年07月07日
|
* @time 2020年07月07日
|
||||||
* @param ManageProcess $process
|
* @param Master $process
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
protected function status(ManageProcess $process)
|
protected function status(Master $process)
|
||||||
{
|
{
|
||||||
$process->status();
|
$process->status();
|
||||||
|
|
||||||
@ -57,10 +66,10 @@ class CatchScheduleCommand extends Command
|
|||||||
* 停止任务
|
* 停止任务
|
||||||
*
|
*
|
||||||
* @time 2020年07月07日
|
* @time 2020年07月07日
|
||||||
* @param ManageProcess $process
|
* @param Master $process
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
protected function stop(ManageProcess $process)
|
protected function stop(Master $process)
|
||||||
{
|
{
|
||||||
$process->stop();
|
$process->stop();
|
||||||
}
|
}
|
||||||
@ -69,10 +78,10 @@ class CatchScheduleCommand extends Command
|
|||||||
* 重启任务
|
* 重启任务
|
||||||
*
|
*
|
||||||
* @time 2020年07月07日
|
* @time 2020年07月07日
|
||||||
* @param ManageProcess $process
|
* @param Master $process
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
protected function reload(ManageProcess $process)
|
protected function reload(Master $process)
|
||||||
{
|
{
|
||||||
$process->reload();
|
$process->reload();
|
||||||
}
|
}
|
||||||
@ -81,10 +90,10 @@ class CatchScheduleCommand extends Command
|
|||||||
* 重启
|
* 重启
|
||||||
*
|
*
|
||||||
* @time 2020年07月07日
|
* @time 2020年07月07日
|
||||||
* @param ManageProcess $process
|
* @param Master $process
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
protected function restart(ManageProcess $process)
|
protected function restart(Master $process)
|
||||||
{
|
{
|
||||||
$process->stop();
|
$process->stop();
|
||||||
|
|
||||||
|
@ -65,6 +65,11 @@ class Master
|
|||||||
*/
|
*/
|
||||||
protected $master_start_at;
|
protected $master_start_at;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var bool
|
||||||
|
*/
|
||||||
|
protected $daemon = false;
|
||||||
|
|
||||||
// 版本
|
// 版本
|
||||||
const VERSION = '1.0.0';
|
const VERSION = '1.0.0';
|
||||||
|
|
||||||
@ -82,7 +87,9 @@ class Master
|
|||||||
public function start()
|
public function start()
|
||||||
{
|
{
|
||||||
// 守护进程
|
// 守护进程
|
||||||
//Process::daemon(true, false);
|
if ($this->daemon) {
|
||||||
|
Process::daemon(true, false);
|
||||||
|
}
|
||||||
// alarm 信号
|
// alarm 信号
|
||||||
// Process::alarm(1000 * 1000);
|
// Process::alarm(1000 * 1000);
|
||||||
// 1s 调度一次
|
// 1s 调度一次
|
||||||
@ -129,7 +136,7 @@ class Master
|
|||||||
{
|
{
|
||||||
return function () {
|
return function () {
|
||||||
$schedule = new Schedule();
|
$schedule = new Schedule();
|
||||||
$schedule->command('catch:cache')->everyTenSeconds();
|
$schedule->command('catch:cache')->everyThirtySeconds();
|
||||||
|
|
||||||
foreach ($schedule->getCronTask() as $cron) {
|
foreach ($schedule->getCronTask() as $cron) {
|
||||||
if ($cron->can()) {
|
if ($cron->can()) {
|
||||||
@ -243,6 +250,8 @@ class Master
|
|||||||
|
|
||||||
$this->initLog();
|
$this->initLog();
|
||||||
|
|
||||||
|
file_put_contents($this->getSaveProcessStatusFile(), '');
|
||||||
|
|
||||||
$this->createTable();
|
$this->createTable();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -268,4 +277,17 @@ class Master
|
|||||||
'default' => 'schedule',
|
'default' => 'schedule',
|
||||||
], 'log');
|
], 'log');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 开启 debug
|
||||||
|
*
|
||||||
|
* @time 2020年07月09日
|
||||||
|
* @return $this
|
||||||
|
*/
|
||||||
|
public function daemon()
|
||||||
|
{
|
||||||
|
$this->daemon = true;
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
}
|
}
|
Loading…
x
Reference in New Issue
Block a user