orvelo / heartbeat-client
Orvelo Heartbeat 客户端 - 当您的脚本未完成健康检查时获取警报
此软件包的规范存储库似乎已消失,因此该软件包已被冻结。
Requires
- php: >=5.3.0
README
8 8888 8 8 8888888888 .8. 8 888888888o. 8888888 8888888888 8 888888888o 8 8888888888 .8. 8888888 8888888888
8 8888 8 8 8888 .888. 8 8888 `88. 8 8888 8 8888 `88. 8 8888 .888. 8 8888
8 8888 8 8 8888 :88888. 8 8888 `88 8 8888 8 8888 `88 8 8888 :88888. 8 8888
8 8888 8 8 8888 . `88888. 8 8888 ,88 8 8888 8 8888 ,88 8 8888 . `88888. 8 8888
8 8888 8 8 888888888888 .8. `88888. 8 8888. ,88' 8 8888 8 8888. ,88' 8 888888888888 .8. `88888. 8 8888
8 8888 8 8 8888 .8`8. `88888. 8 888888888P' 8 8888 8 8888888888 8 8888 .8`8. `88888. 8 8888
8 8888888888888 8 8888 .8' `8. `88888. 8 8888`8b 8 8888 8 8888 `88. 8 8888 .8' `8. `88888. 8 8888
8 8888 8 8 8888 .8' `8. `88888. 8 8888 `8b. 8 8888 8 8888 88 8 8888 .8' `8. `88888. 8 8888
8 8888 8 8 8888 .888888888. `88888. 8 8888 `8b. 8 8888 8 8888 ,88' 8 8888 .888888888. `88888. 8 8888
8 8888 8 8 888888888888 .8' `8. `88888. 8 8888 `88. 8 8888 8 888888888P 8 888888888888 .8' `8. `88888. 8 8888
心跳客户端
心跳服务器通过监听任务成功完成后的“心跳”来让您放心,您的定时任务正在运行。心跳将通过此客户端(或如果您愿意,您可以自己编写)与服务器通信。
基本用法
将心跳客户端包含在您的 composer.json 中
"orvelo/heartbeat-client" : "^1.0"
假设您已引入 vendor/autoload.php,那么以下是最小化启动服务器的步骤
\Orvelo\Heartbeat::task('Super-important task')
->token('TOKEN_GOES_HERE')
->source('live-cluster')
->every('15m')
->slop('2m')
->email('person@example.com');
在您确信计划任务已成功完成后,在您的代码中放置此调用(或一个类似的调用)。相同的代码用于注册任务和更新服务器的心跳。
我们的示例执行以下操作
- 将任务命名为“超级重要任务” - 这是一个标识符,以便您知道哪个脚本有问题
- 设置您的访问令牌 - 您可以从我们这里获得一个
- 设置来源 - 以便您知道消息来自哪个服务器(或者如果多个服务器处理定时任务,则为集群的名称)
- 设置预期重复时间 - 在这个例子中,我们表示该任务每15分钟成功完成一次
- 设置2分钟的时间窗口 - 因为您知道您的脚本有时需要更长的时间
- 提供发送警报的电子邮件地址
任务的唯一标识符是任务名称和来源。如果您有多个服务器执行相同任务,则可以在多个来源中使用具有相同名称的任务。
您可以通过调整任何非 task()、token() 和 source() 的函数来随时修改任务。下一次调用服务器将作为收到的心跳并做出更改。
日常函数
static task(string) 作为构造函数,设置任务名称。这将用于在标识任务和在发送的电子邮件通知中使用
token(string) 设置您的访问令牌。如果没有有效的令牌,服务器将不会响应
every(string) 设置您的预期更新时间。以下是一些示例
- 1h 2m 5s
- 3m
- 180m
- ..等等
slop(string) 允许任务在时间上不那么严格,并给予额外的警告时间。使用与 every() 相同的格式。如果您的脚本完成时间波动,则很有用。
email(string|string[]) 设置我们发送到的电子邮件地址(或地址数组)
source(string) 设置来源。可以使用 gethostname() 定位到特定服务器,或将它定义为来自您的定时任务集群
取消心跳
发送任务名称和来源,以及调用 cancel(),如下所示
// cancel an existing task
\Orvelo\Heartbeat::task('Super-important task')
->token('TOKEN_GOES_HERE')
->source('live-cluster')
->cancel();
发送即时警报
您还可以将心跳服务器用作通知系统,用于一些您应用程序创建的更严重的错误。如果发生最坏的情况,请链接调用 ohDear()
\Orvelo\Heartbeat::task('This should never happen!')
->token('TOKEN_GOES_HERE')
->source('live-cluster')
->email('person@example.com')
->ohDear();
暂停所有任务
如果您有定期间隔的任务,可能会被部署、迁移或计划维护的停机时间中断,则可以暂停从定义来源的所有任务。这将停止心跳服务器检查心跳。
\Orvelo\Heartbeat::task('Pause')
->token('TOKEN_GOES_HERE')
->source('live-cluster')
->pause();
恢复所有任务
一旦您完成对应用程序的维护,您可以通知心跳服务器继续运行操作。所有从这个来源发起的任务,其下一次运行时间将被设置为当前时间加上预配置的间隔。
\Orvelo\Heartbeat::task('Resume')
->token('TOKEN_GOES_HERE')
->source('live-cluster')
->resume();