博客如同一座座知识的灯塔,博友们通过友情链接相互照亮。然而,随着时间的流逝,有些博友可能会出现下链接、博客关停的现象,影响灯塔的光芒。因此,友情链接监控功能就显得有点重要。
友情链接是博客之间互惠互利的重要手段,它有助于提高博客的知名度、流量和搜索引擎排名。然而,要是被单方面下链接,效果就适得其反了,于是就想着弄个友情链接监控功能,也能省去逐一去检查友情链接的麻烦。
友链监控思路
编写php文件,检查友链网站运行状态,及友情链接反链情况,生成json文件缓存数据;
创建 cron 定时任务,每日定时访问php文件,更新友链状态数据;
前端读取json文件数据,显示友链情况;
效果如下:
功能实现方法
步骤一
编写 friend_links.php 功能文件代码,详细代码如下,开头网站信息及友链信息需根据自身情况修改:
<?php // 设置本站链接 $this_site_url = 'https://www.80srz.com'; // 请替换为您的网站URL // 定义友情链接数组 $friend_links = [ '风清' => 'https://wind.ink/email', '钧言极客' => 'https://www.jinjun.top/link.html', 'DAIDAIFU BLOG - 代代付' => 'https://www.ddf.im/index.php/145.html', '南川吟梦' => 'https://blog.southz.top/links.html', '旺东自留地' => 'https://wang618.cn/you-qing-lian-jie.html', // 根据自己友链情况修改,注意是有你链接的友情链接页面的网址! ]; // 缓存文件路径 // $cache_file_path = 'friend-links.json'; $uploads_dir = $_SERVER['DOCUMENT_ROOT'].'/'; $cache_file_path = $uploads_dir. 'friend-links.json'; // 检查链接状态 function check_link_status($url) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL,$url); curl_setopt($ch, CURLOPT_NOBODY, true); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_TIMEOUT, 10); curl_exec($ch); $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); return $http_code; } // 检查是否有反链 function check_backlink($url,$backlink) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL,$url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_TIMEOUT, 10); $content = curl_exec($ch); curl_close($ch); return strpos($content,$backlink) !== false; } // 显示监控结果 function display_monitor_results($friend_links,$this_site_url, $cache_file_path) { // 更新缓存数据 $updated_cache_data = []; foreach ($friend_links as$name => $url) { $http_code = check_link_status($url); $backlink = check_backlink($url, $this_site_url); $status_class = ($http_code == 200) ? 'status-ok' : 'status-error'; $backlink_class =$backlink ? 'backlink-ok' : 'backlink-error'; $updated_cache_data[$name] = [ 'url' => $url, 'status' => $http_code == 200 ? '网站还活着' : '网站倒闭了', 'backlink' => $backlink ? '我们还是朋友' : '友谊小船已翻' ]; } // 写入缓存数据 $cache_data = [ 'timestamp' => time(), // 设置当前时间戳 'links' => $updated_cache_data ]; file_put_contents($cache_file_path, json_encode($cache_data)); return $updated_cache_data; } // 获取监控结果 $monitor_results = display_monitor_results($friend_links, $this_site_url,$cache_file_path); // 输出JSON数据 echo '数据缓存成功';
代码说明: 1、设置博客及友链信息;2、生成json缓存文件保存友链状态信息,避免频繁监测增加服务器负载;3、缓存文件默认保存在网址根目录。
步骤二
创建 cron 定时任务,定期访问 friend_links.php 文件。你可以把它放到网站的任意文件夹中,但要记住路径。这个步骤不再赘述。
步骤三
有了友链监控数据 friend_links.json ,我们还需将其在前端显示,方便直观查看。可以在友链页面主题模板合适位置添加以下代码,样式需根据主题样式进行微调。
// 以下是本站用的一个简单样式,可实现根据友链状态显示不同颜色 <style> table { width: 100%; border-collapse: collapse; } th, td { border: 1px solid #333; /* 灰色边框 */ padding: 10px; text-align: left; } th { background-color: #333; color: #fff; } td.status-ok { color: #0f0; /* 正常状态为绿色 */ } td.status-error { color: #f00; /* 错误状态为红色 */ } td.backlink-ok { color: #0f0; /* 有反链为绿色 */ } td.backlink-error { color: #f00; /* 无反链为红色 */ } </style> <?php // 设置JSON文件路径 $jsonFilePath = 'friend-links.json'; // 检查JSON文件是否存在 if (file_exists($jsonFilePath)) { // 读取JSON文件内容 $jsonContent = file_get_contents($jsonFilePath); // 解析JSON内容 $data = json_decode($jsonContent, true); // 检查解析是否成功 if (json_last_error() === JSON_ERROR_NONE) { // 获取JSON文件中的时间戳 $timestamp =$data['timestamp']; // 显示检查更新时间 echo '<h2>友情链接监控</h2>'; // 显示表格 echo '<table>'; echo '<caption style="text-align:right;font-size:12px;font-color:#999;">自动监控报告时间:' . date('Y - n - j : H:i:s', $timestamp) . '</caption>'; echo '<tr><th style="width:8%">序号</th><th style="width:36%;">网站名称</th><th style="width:28%;">网站状态</th><th style="width:28%;">友链状态</th></tr>'; $rank = 1 ; // 遍历JSON文件中的链接 foreach ($data['links'] as$name => $link) { // 获取链接状态 $status =$link['status']; // 设置状态颜色 $statusClass =$status === '网站还活着' ? 'status-ok' : 'status-error'; // 获取反链状态 $backlink =$link['backlink']; // 设置反链颜色 $backlinkClass =$backlink === '我们还是朋友' ? 'backlink-ok' : 'backlink-error'; // 显示链接信息 echo '<tr>'; echo '<td style="text-align: center;">'.$rank.'</td>'; echo '<td><a href="' . $link['url'] . '" rel="external nofollow noopener noreferrer" target="_blank">' . $name . '</a></td>'; // 显示网站名称 echo '<td class="' . $statusClass . '" style="text-align: center;">' .$status . '</td>'; echo '<td class="' . $backlinkClass . '" style="text-align: center;">' .$backlink . '</td>'; echo '</tr>'; $rank ++; } echo '</table>'; } else { // 如果解析失败,显示错误信息 echo '<p>JSON解析错误: ' . json_last_error_msg() . '</p>'; } } else { // 如果JSON文件不存在,显示错误信息 echo '<p>JSON文件不存在或不可读。</p>'; } ?>
好了,友情链接监控功能到此就已经实现了,记得第一从要访问一次 friend_links.php 生成友链状态数据。想要折腾的博友可以动手去试试吧。
第三方网站监控API推荐
网上有很多这样的服务,诸如:Uptimerobot 和 Uptimeflare 等,基础功能也都是免费的。但今天我要推荐的是 StatusLive + Uptimerobot 组合,因为它部署简单,很适合我这种小白。
StatusLive项目地址:https://github.com/freejishu/StatusLive
Uptimerobot官网地址:https://uptimerobot.com
它最经典的打开方式 ( dist + conf.json + core.php ) ,按照说明申请 API ,修改设置文件内容后,将文件夹上传至主机空间的任意文件夹下即可,不需要使用 docker 技术。
1.本网站资源来源于网络收集,如有侵权,请联系站长进行删除处理。请发送邮件至:chensi2024@foxmail.com,我们将第一时间处理!
2.资源所需价格并非资源售卖价格,是收集、整理、编辑详情以及本站运营的适当补贴,并且本站不提供任何免费技术支持 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需。
3.所有资源仅限于参考和学习,版权归原作者所有,更多请阅读网站声明。
4.如下载链接失效,请在当前页留言或私信管理员,24小时必处理结束!
5.本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解。
6.本站提供的资源仅限用于学习交流和研究目的。不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负,我们不保证内容的长久可用性,通过使用本站内容随之而来的风险以及产生法律纠纷与本站无关,您必须在下载后的24个小时之内,从您的电脑/手机中彻底删除。