exolnet / laravel-heartbeat
定期安排任务向监控系统发送心跳。
Requires
- php: ^7.2
- laravel/framework: ^6.0|^7.0
Requires (Dev)
- guzzlehttp/guzzle: ^6.3
- mockery/mockery: ^1.3
- orchestra/testbench: ^4.0|^5.0
- phpunit/phpunit: ^8.0
- squizlabs/php_codesniffer: ^3.3.2
Suggests
- guzzlehttp/guzzle: Required to send Http signals (~6.0).
README
定期安排任务向监控系统发送心跳。
安装
使用Composer安装此包
composer require exolnet/laravel-heartbeat
如果您不使用包自动发现,请将服务提供者添加到 config/app.php
中的 providers
数组
Exolnet\Heartbeat\HeartbeatServiceProvider::class
并将外观添加到 config/app.php
中的 facades
数组
'Heartbeat' => Exolnet\Heartbeat\HeartbeatFacade::class
配置
为了编辑此包的默认配置(例如,您可以定义预设并配置队列监控),您可以执行
php artisan vendor:publish --provider="Exolnet\Heartbeat\HeartbeatServiceProvider"
之后,配置文件 config/heartbeat.php
将被创建。此文件包含可以为此包配置的所有选项。默认配置文件 在此处可以找到。
用法
发送信号
使用心跳外观
您可以通过 Heartbeat
外观发送心跳信号。要做到这一点,指定您想要使用的通道,并调用带有该通道所需参数的 signal
方法。例如,对于 Http
通道,它可能看起来像这样
Heartbeat::channel('http')->signal('https://beats.envoyer.io/heartbeat/example');
或者,您也可以通过调用 Heartbeat
外观中定义的方法助手来发送相同的信号
Heartbeat::http('https://beats.envoyer.io/heartbeat/example');
使用Artisan
心跳还可以与 heartbeat
Artisan 命令一起使用。要做到这一点,指定通道,并按照与 signal
方法相同的顺序指定通道的参数。以下是如何使用它的两个示例
php artisan heartbeat preset preset-name php artisan heartbeat http https://beats.envoyer.io/heartbeat/example
指定预设
方便的 preset
通道允许您在配置文件中定义所有心跳配置。首先,让我们看看一个 preset
配置的例子
'presets' => [ 'envoyer' => [ 'channel' => 'http', 'url' => 'https://beats.envoyer.io/heartbeat/example', ], ]
现在,此配置可以由 preset
通道使用,在 http
通道上调用信号方法
Heartbeat::preset('envoyer');
心跳为每个通道都列出了所有需要的参数。
队列监控
心跳还可以用于监控您的Laravel队列系统。当您启用Laravel的调度程序时,此功能默认启用。使用预设 queue
,并在您的 storage/app
文件夹中每十五分钟创建一个名为 queue.heartbeat
的文件。
要配置此,只需发布包配置并更新 queue
预设。
可用通道
磁盘
用于在Laravel文件系统磁盘上存储心跳的通道。
文件
用于在文件中存储心跳的通道
Http
用于通过调用URL来执行心跳的通道
自定义通道
心跳附带了一些通道,但您可能想编写自己的驱动程序以通过其他通道发送信号。为了做到这一点,定义一个包含 signal
方法的类。此方法应接收您需要发送信号的所有参数
<?php namespace App\Heartbeats; class CustomChannel { /** * Send a heartbeat signal. * * @param string $someOption * @param array $moreOptions * @return void */ public function signal($someOption, array $moreOptions = []) { // Send the signal according to the specified options. } }
一旦定义了您的通道类,您就可以通过扩展 Heartbeat
的驱动来添加您的驱动。这可以添加到服务提供者的 boot
方法中
<?php namespace App\Providers; use App\Heartbeats\CustomChannel; use Heartbeat; use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider; class AuthServiceProvider extends ServiceProvider { /** * @return void */ public function boot() { Heartbeat::extend('custom', function($app) { return $app->make(CustomChannel::class); }); } }
最后,您现在可以使用您的驱动程序,就像原生一样
Heartbeat::custom('someOption', ['more' => 'options']);
测试
要运行phpUnit测试,请使用
composer test
贡献
请参阅CONTRIBUTING和CODE_OF_CONDUCT以获取详细信息。
安全性
如果您发现任何安全相关的问题,请通过电子邮件security@exolnet.com而不是使用问题跟踪器。