日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > php >内容正文

php

php对接钉钉_php实现钉钉业务报警机器人

發(fā)布時(shí)間:2023/12/10 php 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php对接钉钉_php实现钉钉业务报警机器人 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

使用場景,服務(wù)器報(bào)異常錯(cuò)誤,想要及時(shí)收到報(bào)警信息并處理

環(huán)境介紹,本博使用yaf框架+php,僅僅提供思路,參考,具體根據(jù)自己實(shí)際情況進(jìn)行編寫

1,每十分鐘執(zhí)行一次任務(wù)腳本

# 每10分鐘執(zhí)行一次的任務(wù)

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();

//來自接口的錯(cuò)誤

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,修改框架錯(cuò)誤日志log寫入方法

/**

* error log

*

* @param Exception $exception

* @param int $error_code 0-正常報(bào)錯(cuò)

*/

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 的報(bào)錯(cuò)才推送

// 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消息,給釘釘推送錯(cuò)誤消息

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上面那個(gè)地址,具體信息自行修改

/**

* 釘釘消息推送

* 推到釘釘 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,如圖是我的報(bào)警信息示例

總結(jié)

以上是生活随笔為你收集整理的php对接钉钉_php实现钉钉业务报警机器人的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。