vinelab/oclock

Laravel 包,用于报告计划事件。

v0.1.3 2017-01-13 11:36 UTC

This package is auto-updated.

Last update: 2024-08-27 22:59:06 UTC


README

探索 Laravel 应用中计划事件的详细信息。

这是什么?

有时,您需要在不同的时间运行过多的计划,无论是在同一应用程序中还是在多个应用程序中,例如在微服务架构中,多个服务在不同的时间执行不同的事件,有一个中央位置可以导航这些跨应用程序(服务、项目等)的计划事件就变得至关重要。OClock 实现这一点的方式如下

定义

  • 来源:定义和计划事件的程序/项目。
  • 事件:是一个包含命令和 Cron 表达式的计划事件,该表达式中定义了其运行计划。
  • 会话:单个计划事件的运行。例如,如果事件计划每五分钟运行一次,那么这些每天运行的每一个都是会话。
  • 计划:包含其来源信息的事件的集合。
  1. 将会话输出发送到文件中,以便我们稍后读取
  2. 在每个事件上设置 before 钩子,以便在每次开始时将它们的会话信息存储到数据库中。
  3. 在每个事件上设置 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.phpschedule 方法中,将以下内容添加到底部(在定义所有计划之后)
protected function schedule(Schedule $schedule)
{
    // register schedules here

    // ...

    OClock::register($schedule);
}

确保通过添加 use OClock; 到文件顶部来导入外观。

方法

  • OClock::sessions:获取所有存储的会话
  • OClock::sessionsByDay:按天分组获取所有会话
  • OClock::sessionsForEvent($eventId):获取给定事件的会话