这篇文章将为大家详细讲解有关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调度系统的示例详解的详细内容,更多请关注编程学习网其它相关文章!