php 多进程 常驻内存,ThinkPHP6.0使用EasyTask常驻内存多进程任务管理

该博客介绍了如何基于EasyTask和ThinkPHP框架自定义指令来开发PHP定时任务。通过示例代码展示了如何创建、启动、查询和停止任务,并提供了命令行调用方式。文章还提到了配置文件中的命令注册和不同参数的效果。
摘要由CSDN通过智能技术生成

功能基于EasyTask+ThinkPHP自定义指令开发,详情可以参考:

首先安装相关服务composer require easy-task/easy-task

功能Test代码<?php

/**

* @desc   EasyTask 测试  php think test start --taskcommand timego

* @author wolfcode

* @url wolfcode.net

* @支持常驻内存的PHP定时任务快捷命令

*/

namespace app\command;

use EasyTask\Task;

use think\console\Command;

use think\console\Input;

use think\console\input\Argument;

use think\console\input\Option;

use think\console\Output;

class Test extends Command

{

protected function configure()

{

$this->setName('Test')

->addArgument('argv', Argument::OPTIONAL, "your argv")

->addOption('force', NULL, Option::VALUE_REQUIRED, 'your force')

->addOption('taskcommand', NULL, Option::VALUE_REQUIRED, 'your taskcommand')

->setDescription('测试专用');

}

protected function execute(Input $input, Output $output)

{

$argv        = trim($input->getArgument('argv'));

$force       = $input->hasOption('force') ?: false;

$taskcommand = $input->hasOption('taskcommand') ? $input->getOption('taskcommand') : "empty";

$task        = new Task();

switch ($taskcommand) {

case 'timego':

$task->addFunc(function () {

$now = date("Y-m-d H:i:s");

echo "[{$now}] It's timego now" . PHP_EOL;

}, $taskcommand, 10, 2);                 // 1.添加闭包函数类型定时任务(开启2个进程,每隔10秒执行1次)

break;

default:

$task->addFunc(function () {

$now = date("Y-m-d H:i:s");

echo "[{$now}] it is empty taskcommand now  " . PHP_EOL;

}, $taskcommand, 30, 1);                 // 1.添加闭包函数类型定时任务(开启1个进程,每隔30秒执行1次)

}

switch ($argv) {

case 'start':

//初始化

$task->start();

// 设置非常驻内存

$task->setDaemon(false);

// 设置项目名称

$task->setPrefix('EasyTask');

// 设置记录运行时目录(日志或缓存目录)

$task->setRunTimePath(root_path() . 'runtime' . DIRECTORY_SEPARATOR);

$output->writeln("EasyTask start {$taskcommand}");

break;

case 'status':

$task->status();

$output->writeln("EasyTask status {$taskcommand}");

break;

case 'stop':

$task->stop($force);

$output->writeln("EasyTask stop {$force} {$taskcommand}");

break;

default:

exit('argv is not exist' . PHP_EOL);

}

return true;

}

}

在项目 config/console.php 中的'commands'中注册命令

471aaaa520ea58b28b9a598cf258cde1.png

启用内置命令启动php think test start

效果如下:

9f354a50eeecfc2ca15fd644ad40d718.png

执行timego:php think test start --taskcommand timego

效果如下:

7663fe935c4cc7749e6410120260762b.png参数:

pid:任务进程

id name:任务别名

started:任务启动时间

time:任务执行时间

status:任务状态

ppid:守护进程id

启动任务: php console.php start

查询任务: php console.php status

普通关闭: php console.php stop

强制关闭: php console.php stop force

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值