mirror of
https://gitee.com/zoujingli/ThinkAdmin.git
synced 2025-04-05 05:52:43 +08:00
75 lines
2.3 KiB
PHP
75 lines
2.3 KiB
PHP
<?php
|
||
|
||
// +----------------------------------------------------------------------
|
||
// | ThinkAdmin
|
||
// +----------------------------------------------------------------------
|
||
// | 版权所有 2014~2019 广州楚才信息科技有限公司 [ http://www.cuci.cc ]
|
||
// +----------------------------------------------------------------------
|
||
// | 官方网站: http://demo.thinkadmin.top
|
||
// +----------------------------------------------------------------------
|
||
// | 开源协议 ( https://mit-license.org )
|
||
// +----------------------------------------------------------------------
|
||
// | gitee 代码仓库:https://gitee.com/zoujingli/ThinkAdmin
|
||
// | github 代码仓库:https://github.com/zoujingli/ThinkAdmin
|
||
// +----------------------------------------------------------------------
|
||
|
||
namespace app\admin\queue\task;
|
||
|
||
use library\command\Task;
|
||
use think\console\Input;
|
||
use think\console\Output;
|
||
use think\Db;
|
||
|
||
/**
|
||
* 检查并创建异步任务监听主进程
|
||
* Class Start
|
||
* @package app\admin\queue\task
|
||
*/
|
||
class Start extends Task
|
||
{
|
||
|
||
/**
|
||
* 指令属性配置
|
||
*/
|
||
protected function configure()
|
||
{
|
||
$this->setName('xtask:start')->setDescription('[控制]创建异步任务守护监听主进程');
|
||
}
|
||
|
||
/**
|
||
* 执行启动操作
|
||
* @param Input $input
|
||
* @param Output $output
|
||
*/
|
||
protected function execute(Input $input, Output $output)
|
||
{
|
||
Db::name('SystemQueue')->count();
|
||
$this->setBaseProcess();
|
||
if (($pid = $this->checkProcess()) > 0) {
|
||
$output->info("异步任务监听主进程{$pid}已经启动!");
|
||
} else {
|
||
$this->setWinProcess();
|
||
$this->createProcess();
|
||
$this->setBaseProcess();
|
||
sleep(1);
|
||
if (($pid = $this->checkProcess()) > 0) {
|
||
$output->info("异步任务监听主进程{$pid}启动成功!");
|
||
} else {
|
||
$output->error('异步任务监听主进程创建失败!');
|
||
}
|
||
}
|
||
}
|
||
|
||
private function setBaseProcess()
|
||
{
|
||
$this->cmd = "{$this->bin} xtask:listen";
|
||
}
|
||
|
||
private function setWinProcess()
|
||
{
|
||
if ($this->isWin()) {
|
||
$this->cmd = __DIR__ . DIRECTORY_SEPARATOR . "bin" . DIRECTORY_SEPARATOR . "ThinkAdmin.exe {$this->bin} xtask:listen";
|
||
}
|
||
}
|
||
}
|