使用场景,服务器报异常错误,想要及时收到报警信息并处理

环境介绍,本博使用yaf框架+php,仅仅提供思路,参考,具体根据自己实际情况进行编写

1,每十分钟执行一次任务脚本

# 每10分钟执行一次的任务

if [ "0" -eq "$(($minute % 10))" ]; then

php -f ${pathRoot}public/index.php 'request_uri=/error/dingdingLog'

fi

/**

* error action

*

* @return bool

* @throws Exception

*/

public function errorAction()

{

$req = $this->getRequest();

$exception = $req->getException();

//来自接口的错误

if ($exception instanceof ApiException) {

return $this->json($exception->getCode(), $exception->getMessage());

}

//其它异常

if ($this->yafAutoRender) {

$exceptions = [];

if (! $exception instanceof Exception) {

$exception = new Yaf\Exception\LoadFailed('no exception');

}

//add exception

$exceptions[] = $exception;

//show trace

$this->getView()->exceptions = $exceptions;

Yaf\Dispatcher::getInstance()->autoRender(true);

} else {

if ($exception instanceof Yaf\Exception\LoadFailed) { //接口不存在

$this->log($exception, ApiException::NOT_EXISTS);

return $this->json(ApiException::NOT_EXISTS, $exception->getMessage());

}

$this->log($exception);

return $this->json(ApiException::FATAL, $exception->getMessage());

}

}

5,修改框架错误日志log写入方法

/**

* error log

*

* @param Exception $exception

* @param int $error_code 0-正常报错

*/

private function log($exception, $error_code = 0)

{

//log exception

$msg = sprintf("%s:%s. in %s on line %s, trace:%s",

get_class($exception),

$exception->getMessage(),

$exception->getFile(),

$exception->getLine(),

$exception->getTraceAsString()

);

// 排除 404 的报错才推送

// there is not method / not such file or diractory

if ($error_code != ApiException::NOT_EXISTS) {

$this->saveLog($exception->getMessage());

}

LK::log()->error($msg);

}

如上所示,我将一部分日志写入redis

6,保存日志

public function saveLog($msg)

{

$redis = LK::redis('log');

$key = md5($msg);

$saved = $redis->sadd('error_log', $key);

if ($saved) {

$redis->setex($key, 1100, $msg);

}

return $saved;

}

7,读取redis消息,给钉钉推送错误消息

public function dingdingLogAction()

{

$redis = LK::redis('log');

$keys = $redis->sMembers('error_log');

if (count($keys)) {

foreach ($keys as $key) {

if (false != ($msg = $redis->get($key))) {

Func::dingdingLog($msg);

}

}

$redis->del('error_log');

}

}

8,curl上面那个地址,具体信息自行修改

/**

* 钉钉消息推送

* 推到钉钉 php+web 群

* @return bool

*/

public static function dingdingLog($msg)

{

$url = 'https://oapi.dingtalk.com/robot/send?access_token=XXXXXX';

$env = \Yaf\Application::app()->environ();

$fix = 'somi';

$time = date('Y-m-d H:i:s');

$data = [

'msgtype' => 'text',

'text' => [

'content' => "[{$fix}:{$env}:{$time}]:{$msg}",

]

];

$data_string = json_encode($data);

$resp = \Frame\Core\Tools::curl($url, 'POST', $data_string, ['Content-Type: application/json;charset=utf-8']);

$resp = json_decode($resp, true);

if ($resp['errorcode']) {

return false;

}

return true;

}

9,如图是我的报警信息示例

php对接钉钉_php实现钉钉业务报警机器人相关推荐

  1. 钉钉宜搭邵磊:钉钉宜搭低代码加速业务互联 让改变发生

    简介:近日,在2021"低代码技术发展与应用线上研讨会"上,钉钉宜搭产品总监邵磊带来了"钉钉宜搭低代码加速业务互联 让改变发生"的主题演讲,详细介绍了钉钉宜搭低 ...

  2. 钉钉密聊安不安全 钉钉密聊别人能看到吗

    钉钉app现在很多企业都在使用,为办公人士提供了很大的帮助.而现在不少人也都在使用密聊功能,但是还是有人会问钉钉密聊安不安全?别人能看到密聊吗?下文一一介解答. 钉钉密聊安不安全 钉钉密聊别人能看到吗 ...

  3. 钉钉应用云开发之钉钉开放平台接入

    钉钉应用云开发之钉钉开放平台接入 简介:介绍服务端API及开发工具的使用,使用创建用户接口新建一个用户. 1.首先,我们在钉钉开放平台创建应用https://open-dev.dingtalk.com ...

  4. 钉钉邮箱登录入口_钉邮的使用攻略①

    一.钉邮的账号是什么? 钉邮是由"[钉钉号]+@dingtalk.com"组成的: 手机端:[头像]-点击头像-右上角[-]-[我的信息]-[钉钉号]进行设置,钉邮名不能和他人重复 ...

  5. 鸿蒙钉钉app,钉钉鸿蒙版下载_钉钉手机鸿蒙版下载_玩游戏网

    <钉钉鸿蒙版>App是企业必备的办公通讯软件,具备智能办公.协同办公等多种服务,考勤打卡.OA审批.图文语音交流.文件传输.群共享等海量办公实用功能十分的全面,为企业高管与员工提供快捷方便 ...

  6. php钉钉微应用开发,基于钉钉的移动办公微应用的设计与实现.PDF

    基于钉钉的移动办公微应用的设计与实现 2017 年 软 件 2017, Vol. 38, No . 4 第 3 8 卷 第 4 期 COMPUTER ENGINEERING & SOFTWAR ...

  7. 钉钉扫码免登-钉钉应用内免登的实现(附仓库及Demo)

    新版钉钉扫码免登及钉钉应用内免登的一次实现 (附仓库及Demo) Vue2, JDK1.8, SpringBoot2.x.x, 钉钉模块, 钉钉模块Demo, 钉钉开放平台 目录 新版钉钉扫码免登及钉 ...

  8. 钉钉app显示服务器出错,钉钉一直正在重连是怎么回事 钉钉打不开怎么办

    在今天8月30号下午很多网友出现钉钉显示一直重连的情况,网友一直发不出消息,然后在PC上和手机上钉钉都重新登录不上,登录上了也发不了消息,所有小编猜测可能是钉钉服务器崩溃导致. 钉钉打不开怎么办 在2 ...

  9. 钉钉小程序生态5—钉钉群机器人消息通知和钉钉工作通知

    文章导航 钉钉小程序生态1-区分企业内部应用.第三方企业应用.第三方个人应用 钉钉小程序生态2-区分小程序和H5微应用 钉钉小程序生态3-钉钉扫码登录PC端网站 钉钉小程序生态4-钉钉小程序三方企业应 ...

最新文章

  1. 梯度倒谱matlab程序,MFCC梅尔倒谱参数及matlab代码
  2. 计算机辅助教学导学设计研究,《计算机辅助教学》实验报告
  3. 洛谷——P1002 过河卒||codevs——T1010 过河卒
  4. .net动态控件的使用(listview ,treeview,tabControl)
  5. python中的下标索引
  6. vb datatable转二维数组_一次稀疏数组的实现过程(附解答思路)
  7. php 访问url curl,推荐PHP一个用CURL访问URL的函数
  8. C++——unique()和unique_copy()
  9. linux下PowerDNS不完全配置
  10. OpenMP和Pthread比较
  11. Webmin远程命令执行漏洞(CVE-2019-15107 )复现
  12. RK3228开发之gc2145芯片手册分析
  13. Guava Cache 过期回源
  14. 5G发展困难,贪婪的手机企业不愿降价,运营商无奈再开4G价格战
  15. 如何查看wifi密码
  16. Windows下Python的安装
  17. 浅谈大数据任务调度平台
  18. 计算机附录的相关文件,计算机化系统附录与计算机文件编制验证实际操作2.pptx...
  19. Golang相关面试题
  20. java map tostring_Map转为String

热门文章

  1. BZOJ2948 : [Poi2001]绿色游戏
  2. 3d照片环效果(修改版--添加了x轴y轴双向转动和修复模糊度的bug)
  3. ImageView及其子类
  4. Python Interview Question and Answers
  5. delphi下实现ribbon界面的方法(一)
  6. WinCE 5.0 WIFI 无线网卡的配置和建立连接(转)
  7. C++编绎器编绎C语言的问题
  8. googlenet网络结构_CNN网络结构的发展
  9. 有关计算机组成原理知识的论文,关于计算机组成原理的论文_计算机组成原理_图灵机的组成...
  10. microsoft office 卸载不了