shali / think-msg
thinkphp-msg 是一个基于 thinkphp 的消息推送扩展。
2.0.0
2026-10-30 08:32 UTC
Requires
- php: ^7.2.0
- ext-curl: *
- ext-json: *
- ext-mbstring: *
- ext-redis: *
- topthink/framework: ^5.0 || ^6.0.0
- topthink/think-queue: ^3.0 || dev-master
Requires (Dev)
None
Suggests
None
Provides
None
Conflicts
None
Replaces
None
This package is not auto-updated.
Last update: 2026-10-31 13:08:25 UTC
README
帮助
安装
composer require shali/think-msg
使用
- v1.x.x 版本,安装完成会自动接管你的异常,并处理异常消息发送
- v2.x.x 版本,安装完成不再强制接管你的异常,如果你需要处理异常消息,需要在 provider 中注册他,或者基于他衍生你的自定义异常处理器。
发送异常报告
你的系统出现异常时,你无法及时了解。借助这个扩展,你可以将异常报告发送给指定的邮箱,或者即时聊天平台,如:微信、QQ、钉钉等。
- 当你安装完
think-msg扩展后,你需要在config/msg.php文件中配置好你的参数,他就能在你的系统中运行起来,帮你接管异常消息的通知。不需要你改动任何现有的业务逻辑代码。 - 异常报告的发送默认是异步的,当然他需要你运行消息发送队列任务。
php think queue:listen --queue=think-msg:msg_push
相同异常间隔通知
扩展使用异常类名、异常代码、相对文件路径和行号生成异常指纹。异常消息不参与指纹计算,因此消息中的订单号、用户 ID 等动态业务数据不会导致同类异常重复通知。
// config/msg.php
'exception_report' => [
// 同类异常每 30 分钟最多通知一次;设置为 0 表示关闭间隔限制
'interval' => 1800,
// 对应 config/cache.php 中的 Redis store
'redis_store' => 'redis',
'key_prefix' => 'think-msg:exception:',
// Redis 不可用时仍发送通知,避免漏报
'fail_open' => true,
],
间隔从上一次成功取得通知资格时开始计算,期间重复发生的异常不会刷新间隔。多个进程并发上报同类异常时,Redis 原子操作保证只有一个进程入队通知。
发送普通消息
我们还支持发送普通消息,可选异步或同步发送。
$msg = \think\msg\msg\TextMsg::build()->setContent('你好,我是小助手');
// 同步发送
\think\msg\facade\Msg::send($msg);
// 异步发送
\think\msg\facade\Msg::asyncSend($msg);
支持的平台
- [ ] 钉钉
- [x] 飞书
- [ ] 微信
- [ ] 邮件
- [ ] 短信