vinelab / oclock
Laravel 包,用于报告计划事件。
v0.1.3
2017-01-13 11:36 UTC
Requires
- illuminate/console: ^5.3
- illuminate/support: ^5.3
- jenssegers/mongodb: ^3.1
- mtdowling/cron-expression: ^1.1
- predis/predis: ^1.1
Requires (Dev)
- mockery/mockery: ^0.9.7
- phpunit/phpunit: ^5.7
This package is auto-updated.
Last update: 2024-08-27 22:59:06 UTC
README
探索 Laravel 应用中计划事件的详细信息。
这是什么?
有时,您需要在不同的时间运行过多的计划,无论是在同一应用程序中还是在多个应用程序中,例如在微服务架构中,多个服务在不同的时间执行不同的事件,有一个中央位置可以导航这些跨应用程序(服务、项目等)的计划事件就变得至关重要。OClock 实现这一点的方式如下
定义
- 来源:定义和计划事件的程序/项目。
- 事件:是一个包含命令和 Cron 表达式的计划事件,该表达式中定义了其运行计划。
- 会话:单个计划事件的运行。例如,如果事件计划每五分钟运行一次,那么这些每天运行的每一个都是会话。
- 计划:包含其来源信息的事件的集合。
- 将会话输出发送到文件中,以便我们稍后读取
- 在每个事件上设置
before
钩子,以便在每次开始时将它们的会话信息存储到数据库中。 - 在每个事件上设置
after
钩子以- 更新会话信息并将会话标记为完成,同时运行状态标志
is_running
将标记为true
。 - 从文件中读取会话输出并将其添加到数据库中的会话记录中
- 删除文件
- 更新会话信息并将会话标记为完成,同时运行状态标志
要求
安装
composer require vinelab/oclock
配置
- 将服务提供程序
OClock\OClockServiceProvider::class,
添加到config/app.php
文件中的providers
数组中 - 按如下方式将 mongodb 配置添加到
config/database.php
'default' => env('DB_CONNECTION', 'mongodb'),
'connections' => [ 'mongodb' => [ 'driver' => 'mongodb', 'host' => env('DB_HOST', 'localhost'), 'port' => env('DB_PORT', 27017), 'database' => env('DB_DATABASE', 'logs'), 'username' => env('DB_USERNAME'), 'password' => env('DB_PASSWORD'), 'options' => [ 'database' => 'admin' // sets the authentication database required by mongo 3 ] ], ]
- 使用正确的参数更新
.env
文件
# MongoDB
DB_HOST=localhost
DB_PORT=27017
DB_DATABASE=logs
DB_USERNAME=
DB_PASSWORD=
用法
设置
- 在
app/Console/Kernel.php
的schedule
方法中,将以下内容添加到底部(在定义所有计划之后)
protected function schedule(Schedule $schedule) { // register schedules here // ... OClock::register($schedule); }
确保通过添加 use OClock;
到文件顶部来导入外观。
方法
OClock::sessions
:获取所有存储的会话OClock::sessionsByDay
:按天分组获取所有会话OClock::sessionsForEvent($eventId)
:获取给定事件的会话