Workerman-Crontab 项目教程
1. 项目目录结构及介绍
workerman-crontab/
├── composer.json
├── config/
│ └── crontab.php
├── src/
│ ├── Crontab.php
│ ├── Worker.php
│ └── ...
├── vendor/
│ └── ...
├── README.md
└── start.php
目录结构说明
- composer.json: 项目的依赖管理文件,用于定义项目的依赖包。
- config/: 配置文件目录,包含项目的配置文件,如
crontab.php
。 - src/: 源代码目录,包含项目的核心代码文件,如
Crontab.php
和Worker.php
。 - vendor/: 依赖包目录,由 Composer 自动生成,包含项目所需的所有第三方库。
- README.md: 项目说明文件,通常包含项目的简介、安装方法和使用说明。
- start.php: 项目的启动文件,用于启动 Workerman 服务。
2. 项目的启动文件介绍
start.php
<?php
require_once __DIR__ . '/vendor/autoload.php';
use Workerman\Worker;
use Workerman\Crontab\Crontab;
$worker = new Worker();
$worker->onWorkerStart = function() {
// 每分钟的第1秒执行
new Crontab('1 * * * * *', function() {
echo date('Y-m-d H:i:s') . "\n";
});
// 每天的7点50执行,注意这里省略了秒位
new Crontab('50 7 * * *', function() {
echo date('Y-m-d H:i:s') . "\n";
});
};
Worker::runAll();
启动文件说明
- require_once: 引入 Composer 自动加载文件,确保所有依赖包可以被正确加载。
- Worker: Workerman 的核心类,用于创建和管理 Worker 进程。
- Crontab: Workerman 的定时任务类,用于设置定时任务。
- onWorkerStart: Worker 进程启动时的回调函数,通常在这里设置定时任务。
- Worker::runAll(): 启动所有 Worker 进程。
3. 项目的配置文件介绍
config/crontab.php
<?php
return [
'timezone' => 'PRC', // 设置时区
'tasks' => [
'task1' => [
'expression' => '1 * * * * *', // 每分钟的第1秒执行
'callback' => function() {
echo date('Y-m-d H:i:s') . "\n";
}
],
'task2' => [
'expression' => '50 7 * * *', // 每天的7点50执行
'callback' => function() {
echo date('Y-m-d H:i:s') . "\n";
}
]
]
];
配置文件说明
- timezone: 设置 PHP 的时区,确保定时任务的时间计算正确。
- tasks: 定义定时任务的数组,每个任务包含
expression
(定时表达式)和callback
(回调函数)。 - expression: 定时任务的执行时间表达式,格式类似 Linux 的 crontab。
- callback: 定时任务执行时的回调函数,通常在这里编写任务的具体逻辑。
通过以上配置,可以灵活地定义和管理定时任务,确保项目在指定时间执行相应的任务。