## Structure
![uml](media/uml.png#2)
## Installation
Install the latest version with
```bash
$ composer require tonychen/php-task
```
windows下忽略依赖安装
```bash
$ composer require tonychen/php-task --ignore-platform-reqs
```
## Basic Usage
```php
<?php
include 'vendor/autoload.php';
use Tony\Task\Job\Job;
use Tony\Task\Runner;
use Tony\Task\Scheduler;
use Tony\Task\Struct\ProcessConfig;
class Demo extends Job
{
public function execute(Scheduler $subject): void
{
/**@var Scheduler $subject */
$expression = $subject->getTimer()->getExpression();
error_log(date('Y-m-d H:i:s') . "\t{$expression}\n", 3, '/tmp/php-task.log');
}
}
$processConfig = new ProcessConfig();
$processConfig->pidFile = '/tmp/php-task.pid';
$processConfig->stdErr = '/dev/null';
$processConfig->stdOut = '/dev/null';
$processConfig->stdIn = '/dev/null';
$schedule = new Scheduler();
$schedule->getTimer()->everyMinute();
$schedule->attach(new Demo());
// 5分钟执行一次
$schedule5 = new Scheduler();
$schedule5->getTimer()->everyFiveMinutes();
$schedule5->attach(new Demo());
// 30分钟执行一次
$schedule30 = new Scheduler();
$schedule30->getTimer()->everyThirtyMinutes();
$schedule30->attach(new Demo());
// 自定义事件表达式
// 2个小时执行一次
$schedule2Hours = new Scheduler();
$schedule2Hours->getTimer()->setExpression("* */2 * * *");
$schedule2Hours->attach(new Demo());
$schedules = new SplObjectStorage();
$schedules->attach($schedule);
$schedules->attach($schedule5);
$schedules->attach($schedule30);
$schedules->attach($schedule2Hours);
$runner = new Runner();
$runner->setProcessConfig($processConfig);
$runner->setSchedulers($schedules);
$runner->run();
```
```bash
# 启动进程任务
php example.php start
# 结束进程任务
php example.php stop
# 查看进程任务的在线时间、内存使用状态、进程id
php example.php status
```
![进程状态](media/task-status.png)
## 文件日志结果(/tmp/php-task.log)
```php
2018-06-17 15:06:05 */1 * * * *
2018-06-17 15:07:00 */1 * * * *
2018-06-17 15:08:00 */1 * * * *
2018-06-17 15:09:00 */1 * * * *
2018-06-17 15:10:00 */1 * * * *
2018-06-17 15:10:00 */5 * * * *
2018-06-17 15:11:00 */1 * * * *
2018-06-17 15:12:00 */1 * * * *
2018-06-17 15:13:00 */1 * * * *
2018-06-17 15:14:00 */1 * * * *
2018-06-17 15:15:00 */1 * * * *
2018-06-17 15:15:00 */5 * * * *
2018-06-17 15:16:00 */1 * * * *
2018-06-17 15:17:00 */1 * * * *
2018-06-17 15:18:00 */1 * * * *
2018-06-17 15:19:00 */1 * * * *
2018-06-17 15:27:38 */1 * * * *
2018-06-17 15:28:00 */1 * * * *
2018-06-17 15:29:00 */1 * * * *
2018-06-17 15:30:00 */1 * * * *
2018-06-17 15:30:00 */5 * * * *
2018-06-17 15:30:00 */30 * * * *
2018-06-17 15:31:00 */1 * * * *
2018-06-17 15:32:00 */1 * * * *
```
## 特性
- 自动识别时区,不同时区的服务器再也不用手动修改时区
- 可以设置Job的执行优先级.
## 表达式说明
```php
* * * * *
- - - - -
| | | | |
| | | | |
| | | | +----- day of week (0 - 7) (Sunday=0 or 7)
| | | +---------- month (1 - 12)
| | +--------------- day of month (1 - 31)
| +-------------------- hour (0 - 23)
+------------------------- min (0 - 59)
```
### TODO LIST
- [ ] 完整的项目案例
- [ ] 测试用例
- [ ] 内存探测的做稳定了,用一段时间,如果没有新增功能,发布一个0.x系列的正式版本
- [ ] 再往后去,在功能上做一个1.0版本的规划,发布1.0版本
#### 参考文章
- https://segmentfault.com/a/1190000005979154
- http://hejunhao.me/archives/470
免责声明:
1.本资源仅供学习和交流使用,不保证其准确性、完整性、及时性或适用性。
2.本资源仅包含一般信息,不构成专业建议。在使用本资源时,请务必自行研究并谨慎决策。
3.我已尽力确保本资源的正确性和合法性,但不对其准确性、完整性和及时性做出保证。
4.本资源不应用于商业用途。
5.在使用本资源的过程中,用户应自行承担所有风险和责任,并遵守相关法律法规。
6.对于因使用本资源而产生的任何损失或损害,我概不负责。
请确保在使用本资源时仔细阅读并遵守以上免责声明。如果您有任何疑问或需要进一步帮助,请联系我。
没有合适的资源?快使用搜索试试~ 我知道了~
php定时任务框架使用案例源码.zip
共38个文件
php:24个
yml:4个
gitignore:3个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 105 浏览量
2024-02-21
20:27:30
上传
评论
收藏 261KB ZIP 举报
温馨提示
php定时任务框架使用案例源码.zip php定时任务框架使用案例源码.zip php定时任务框架使用案例源码.zip php定时任务框架使用案例源码.zip php定时任务框架使用案例源码.zip
资源推荐
资源详情
资源评论
收起资源包目录
php定时任务框架.zip (38个子文件)
php-task-master
codeception.yml 419B
media
uml.png 114KB
task-status.png 25KB
src
Utils
ThrowableCatch.php 3KB
Logger.php 10KB
MemoryProfiler.php 3KB
Tool.php 309B
SingletonImpl.php 479B
Struct
ProcessConfig.php 379B
Runner.php 6KB
Console.php 15KB
Daemon.php 5KB
Scheduler.php 1KB
Timer.php 4KB
Job
Job.php 785B
composer.json 482B
tests
_data
.gitkeep 0B
functional.suite.yml 360B
unit
_bootstrap.php 81B
TimerTest.php 1KB
_support
FunctionalTester.php 610B
_generated
.gitignore 13B
AcceptanceTester.php 610B
NoGuy.php 588B
Helper
Unit.php 179B
Acceptance.php 185B
Functional.php 185B
UnitTester.php 598B
unit.suite.yml 161B
_output
.gitignore 13B
_bootstrap.php 186B
acceptance.suite.yml 347B
_mdwriter.cson 6KB
.gitignore 83B
example.php 1KB
example
task.php 31B
uml.vpp 670KB
README.md 4KB
共 38 条
- 1
资源评论
武昌库里写JAVA
- 粉丝: 3136
- 资源: 1872
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功