利用钉钉机器人和PHP开发一款免费的网站可用性检测工具,单节点版

本文主要是介绍利用钉钉机器人和PHP开发一款免费的网站可用性检测工具,单节点版,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言

手里有几套系统正在运维,需要保障正常运行,所以可用性检测就必不可少啦,
以前本来是用的阿里官方的云监控,但现在价格感觉太贵了,不划算
在这里插入图片描述
那就自己手搓一个简易版的监控吧。

成品效果展示

在这里插入图片描述

代码展示

<?php
// 准备要检查的URL列表
$websites = ["官方网站" => "http://iiar.cn","测试站点" =>"https://test.dalezhi.cn",// 继续添加更多网站
];
// 各位要换成自己的钉钉机器人token哦
$dingding = "https://oapi.dingtalk.com/robot/send?access_token=****";foreach ($websites as $name => $url) {// 初始化cURL会话$ch = curl_init();// 设置cURL选项curl_setopt($ch, CURLOPT_URL, $url);curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);curl_setopt($ch, CURLOPT_HEADER, true); // 获取头信息curl_setopt($ch, CURLOPT_NOBODY, true); // 仅获取头信息// 执行cURL请求curl_exec($ch);// 获取HTTP状态码$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);// 关闭cURL会话curl_close($ch);// 检查HTTP状态码if ($http_code == 200) {echo $name.'ok <br/>';} else {$data = ["text" => ["content" => $name.",无法访问 ".$url],"msgtype" => "text"];$jsonData = json_encode($data);// 初始化cURL会话$new_url = curl_init($dingding);// 设置cURL选项curl_setopt($new_url, CURLOPT_POST, true);curl_setopt($new_url, CURLOPT_RETURNTRANSFER, true);curl_setopt($new_url, CURLOPT_HTTPHEADER, ['Content-Type: application/json','Content-Length: ' . strlen($jsonData)]);curl_setopt($new_url, CURLOPT_POSTFIELDS, $jsonData);// 执行cURL请求并获取响应$response = curl_exec($new_url);curl_close($ch);}
}
?>

这段PHP代码的主要功能是检查一组网站的可访问性,如果某个网站无法访问,就向钉钉机器人发送警报。下面是对代码的详细解释:

<?php
// 准备要检查的URL列表
$websites = ["官方网站" => "http://iiar.cn","测试站点" =>"https://test.dalezhi.cn",// 继续添加更多网站
];
// 各位要换成自己的钉钉机器人token哦
$dingding = "https://oapi.dingtalk.com/robot/send?access_token=****";
  • 代码首先定义一个关联数组 $websites,其中键是网站的描述,值是网站的URL。
  • 然后定义一个变量 $dingding,保存钉钉机器人的API地址及其访问令牌。
foreach ($websites as $name => $url) {// 初始化cURL会话$ch = curl_init();
  • 使用 foreach 循环遍历 $websites 数组,每次循环提取一个网站的名称 $name 和 URL $url
  • 使用 curl_init() 初始化一个cURL会话。
    // 设置cURL选项curl_setopt($ch, CURLOPT_URL, $url);curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);curl_setopt($ch, CURLOPT_HEADER, true); // 获取头信息curl_setopt($ch, CURLOPT_NOBODY, true); // 仅获取头信息// 执行cURL请求curl_exec($ch);// 获取HTTP状态码$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);// 关闭cURL会话curl_close($ch);
  • 使用 curl_setopt() 设置cURL选项:
    • CURLOPT_URL:设置要请求的URL。
    • CURLOPT_RETURNTRANSFER:将cURL执行结果返回为字符串,而不是直接输出。
    • CURLOPT_HEADERCURLOPT_NOBODY:只获取HTTP头信息,不获取内容。
  • 使用 curl_exec() 执行cURL请求。
  • 使用 curl_getinfo() 获取HTTP状态码。
  • 使用 curl_close() 关闭cURL会话。
    // 检查HTTP状态码if ($http_code == 200) {echo $name . ' ok <br/>';} else {$data = ["text" => ["content" => $name . ", 无法访问 " . $url],"msgtype" => "text"];$jsonData = json_encode($data);
  • 检查HTTP状态码是否为200(表示请求成功)。
    • 如果成功,输出网站名称和 ‘ok’。
    • 如果不成功,准备发送到钉钉的消息内容,使用关联数组 $data 创建消息体,并将其编码为JSON格式。
        // 初始化cURL会话$new_url = curl_init($dingding);// 设置cURL选项curl_setopt($new_url, CURLOPT_POST, true);curl_setopt($new_url, CURLOPT_RETURNTRANSFER, true);curl_setopt($new_url, CURLOPT_HTTPHEADER, ['Content-Type: application/json','Content-Length: ' . strlen($jsonData)]);curl_setopt($new_url, CURLOPT_POSTFIELDS, $jsonData);// 执行cURL请求并获取响应$response = curl_exec($new_url);curl_close($new_url);}
}
?>
  • 再次初始化一个cURL会话,准备向钉钉发送POST请求。
  • 设置cURL选项:
    • CURLOPT_POST:设置为POST请求。
    • CURLOPT_RETURNTRANSFER:将响应结果返回为字符串。
    • CURLOPT_HTTPHEADER:设置HTTP头信息,包括内容类型和内容长度。
    • CURLOPT_POSTFIELDS:设置POST请求的内容,即之前编码的JSON数据。
  • 执行cURL请求,发送消息到钉钉机器人。
  • 关闭cURL会话。

当然 上面的步骤 只是写了一个检测流程,实际运行的时候 可以借助宝塔的定时任务,实现1分钟执行一次。
在这里插入图片描述

这篇关于利用钉钉机器人和PHP开发一款免费的网站可用性检测工具,单节点版的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1065750

相关文章

C++链表的虚拟头节点实现细节及注意事项

《C++链表的虚拟头节点实现细节及注意事项》虚拟头节点是链表操作中极为实用的设计技巧,它通过在链表真实头部前添加一个特殊节点,有效简化边界条件处理,:本文主要介绍C++链表的虚拟头节点实现细节及注... 目录C++链表虚拟头节点(Dummy Head)一、虚拟头节点的本质与核心作用1. 定义2. 核心价值二

SpringBoot开发中十大常见陷阱深度解析与避坑指南

《SpringBoot开发中十大常见陷阱深度解析与避坑指南》在SpringBoot的开发过程中,即使是经验丰富的开发者也难免会遇到各种棘手的问题,本文将针对SpringBoot开发中十大常见的“坑... 目录引言一、配置总出错?是不是同时用了.properties和.yml?二、换个位置配置就失效?搞清楚加

Python中对FFmpeg封装开发库FFmpy详解

《Python中对FFmpeg封装开发库FFmpy详解》:本文主要介绍Python中对FFmpeg封装开发库FFmpy,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、FFmpy简介与安装1.1 FFmpy概述1.2 安装方法二、FFmpy核心类与方法2.1 FF

基于Python开发Windows屏幕控制工具

《基于Python开发Windows屏幕控制工具》在数字化办公时代,屏幕管理已成为提升工作效率和保护眼睛健康的重要环节,本文将分享一个基于Python和PySide6开发的Windows屏幕控制工具,... 目录概述功能亮点界面展示实现步骤详解1. 环境准备2. 亮度控制模块3. 息屏功能实现4. 息屏时间

Python实例题之pygame开发打飞机游戏实例代码

《Python实例题之pygame开发打飞机游戏实例代码》对于python的学习者,能够写出一个飞机大战的程序代码,是不是感觉到非常的开心,:本文主要介绍Python实例题之pygame开发打飞机... 目录题目pygame-aircraft-game使用 Pygame 开发的打飞机游戏脚本代码解释初始化部

使用Python开发一个现代化屏幕取色器

《使用Python开发一个现代化屏幕取色器》在UI设计、网页开发等场景中,颜色拾取是高频需求,:本文主要介绍如何使用Python开发一个现代化屏幕取色器,有需要的小伙伴可以参考一下... 目录一、项目概述二、核心功能解析2.1 实时颜色追踪2.2 智能颜色显示三、效果展示四、实现步骤详解4.1 环境配置4.

Python使用smtplib库开发一个邮件自动发送工具

《Python使用smtplib库开发一个邮件自动发送工具》在现代软件开发中,自动化邮件发送是一个非常实用的功能,无论是系统通知、营销邮件、还是日常工作报告,Python的smtplib库都能帮助我们... 目录代码实现与知识点解析1. 导入必要的库2. 配置邮件服务器参数3. 创建邮件发送类4. 实现邮件

基于Python开发一个有趣的工作时长计算器

《基于Python开发一个有趣的工作时长计算器》随着远程办公和弹性工作制的兴起,个人及团队对于工作时长的准确统计需求日益增长,本文将使用Python和PyQt5打造一个工作时长计算器,感兴趣的小伙伴可... 目录概述功能介绍界面展示php软件使用步骤说明代码详解1.窗口初始化与布局2.工作时长计算核心逻辑3

python web 开发之Flask中间件与请求处理钩子的最佳实践

《pythonweb开发之Flask中间件与请求处理钩子的最佳实践》Flask作为轻量级Web框架,提供了灵活的请求处理机制,中间件和请求钩子允许开发者在请求处理的不同阶段插入自定义逻辑,实现诸如... 目录Flask中间件与请求处理钩子完全指南1. 引言2. 请求处理生命周期概述3. 请求钩子详解3.1

如何基于Python开发一个微信自动化工具

《如何基于Python开发一个微信自动化工具》在当今数字化办公场景中,自动化工具已成为提升工作效率的利器,本文将深入剖析一个基于Python的微信自动化工具开发全过程,有需要的小伙伴可以了解下... 目录概述功能全景1. 核心功能模块2. 特色功能效果展示1. 主界面概览2. 定时任务配置3. 操作日志演示