<?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;

/**
 * 平滑停止异步任务守护的主进程
 * Class Stop
 * @package app\admin\queue\task
 */
class Stop extends Task
{

    /**
     * 指令属性配置
     */
    protected function configure()
    {
        $this->setName('xqueue:stop')->setDescription('平滑停止异步任务所有的进程');
    }

    /**
     * 停止所有任务执行
     * @param Input $input
     * @param Output $output
     */
    protected function execute(Input $input, Output $output)
    {
        $this->cmd = "{$this->bin} xqueue:";
        if (count($processList = $this->queryProcess()) < 1) {
            $output->writeln("没有需要结束的任务进程哦!");
        } else foreach ($processList as $item) {
            $this->closeProcess($item['pid']);
            $output->writeln("发送结束任务进程{$item['pid']}指令成功!");
        }
    }
}