php项目接入xxl-job调度系统的示例详解
编程侠影飘
2024-04-25 13:56
短信预约 PHP-IT技能 免费直播动态提醒
这篇文章将为大家详细讲解有关php项目接入xxl-job调度系统的示例详解,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
引言
XXL-JOB是一个分布式调度系统,它允许您轻松地管理和调度任务。本文档提供了将 PHP 项目接入 XXL-JOB 调度系统的逐步指南。
先决条件
- PHP 5.6+
- Composer
- MySQL/MariaDB/PostgreSQL 数据库
安装 XXL-JOB
- 安装依赖项:
composer require pphf/xxl-job-client-php
- 创建数据库表:
创建一个名为 xxl_job_registry
的数据库表,其中包含以下列:
CREATE TABLE `xxl_job_registry` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`job_group` varchar(255) NOT NULL,
`job_name` varchar(255) NOT NULL,
`executor_handler` varchar(255) NOT NULL,
`executor_param` text,
`trigger_status` int(11) NOT NULL,
`trigger_msg` varchar(255) NOT NULL,
`job_cron` varchar(255) NOT NULL,
`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE INDEX `uk_job_group_job_name` (`job_group`, `job_name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
- 初始化 XXL-JOB 客户端:
require_once "vendor/autoload.php";
use PphfXxlJobClient;
$client = new Client([
"registryHost" => "127.0.0.1",
"registryPort" => 9780,
"accessToken" => "your_access_token",
]);
创建任务
- 创建一个任务类,该类扩展
PphfXxlJobJobHandler
抽象类:
use PphfXxlJobJobHandler;
class MyJobHandler extends JobHandler
{
// 重写 execute 方法以定义任务逻辑
public function execute(): void
{
// 任务逻辑
}
}
- 在
executor_handler
列中注册任务类:
INSERT INTO `xxl_job_registry` (`job_group`, `job_name`, `executor_handler`, `trigger_status`)
VALUES ("default", "my_job", "PphfXxlJobExamplesMyJobHandler", 1);
调度任务
- 使用客户端调度任务:
$client->schedule(
"default", // 任务组
"my_job", // 任务名称
"* * * * *", // cron 表达式
[] // 任务参数
);
- 客户端的
schedule
方法返回一个Promise
对象。您可以使用then
方法添加回调函数来处理任务的执行结果:
$client->schedule(
"default",
"my_job",
"* * * * *",
[]
)->then(function($result) {
// 任务执行结果
});
监控任务
您可以在 XXL-JOB 仪表板中监控任务的状态和进度。仪表板可通过以下 URL 访问:
http://127.0.0.1:9780/xxl-job-admin/
高级用法
- 分布式锁:XXL-JOB 使用分布式锁来确保任务顺序执行。
- 失败重试:XXL-JOB 可以自动重试失败的任务。
- 任务分组:您可以将任务分组,以便集中管理和调度。
- 执行器模式:XXL-JOB 支持多种执行器模式,例如 Java、Python 和 Go。
有关更多信息,请参阅 XXL-JOB 的官方文档:https://xxl-job.readthedocs.io/en/latest/。
以上就是php项目接入xxl-job调度系统的示例详解的详细内容,更多请关注编程学习网其它相关文章!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341