PHP实现的redis主从数据库状态检测功能示例


Posted in PHP onJuly 20, 2017

本文实例讲述了PHP实现的redis主从数据库状态检测功能。分享给大家供大家参考,具体如下:

实例:

<?php
/**
 * 检测多个主从redis数据库是否挂掉
 * 建立从数据库$redis_db的二维数组,内容包含每个从服务器的配置数据
 */
header("Content-Type: text/html; charset=utf-8");
set_time_limit(0);
$redis_db = array(
  'db1'=>array(
    'hostname' => '127.0.0.1',
    'port' => 6379,
    'password' => '',
  ),
  'db2'=>array(
    'hostname' => '192.168.2.179',
    'port' => 6379,
    'password' => '111111',
  ),
);
$content = '';
foreach ($redis_db as $db_key) {
  $host = $db_key['hostname'];
  $port = $db_key['port'];
  $redis = new Redis();
  //连接本地的 Redis 服务
  $status= $redis->connect($host, $port);
  if(!$status) {
    $content .= "redis从数据库( $host )无法连接 ! <br/>";
    continue;
  }
  if(!empty($db_key['password'])) {
    $pass = $redis->auth($db_key['password']);
    if(!$pass) {
      $content .= "redis从数据库( $host )密码错误 ! <br/>";
      continue;
    }
  }
  try {
    $config = $redis->info();
    if('up' == $config['master_link_status']) {
    } else {
      $content .= "redis从数据库( $host )挂掉了! <br/>";
    }
  }
  catch(RedisException $e)
  {
    $content .= "redis从数据库( $host )报错:" . $e->getMessage()."<br/>";
  }
}
//若报错信息不为空,发送报错邮件
if(!empty($content)) {
  $title = '主从redis数据库状态检测报错 ';
  $content = date("Y-m-d H:i:s",time()) . "<br/>" . $content;
  $sendurl = "http://localhost/api.com/test.php?title=".$title."&content=".$content;
  $result = file_get_contents($sendurl);
  if('ok' != $result) {
    $message = date("Y-m-d H:i:s",time()).' redisSlave.php 主从redis数据库状态检测报错 邮件发送失败!'."\n";
    $content = str_replace("<br/>", "\n", $content);
    $message .= $content;
    error_log($message,3,"error.log");
  }
}

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
基于curl数据采集之单页面并行采集函数get_htmls的使用
Apr 28 PHP
php上传文件中文文件名乱码的解决方法
Nov 01 PHP
xss防御之php利用httponly防xss攻击
Mar 21 PHP
php读取大文件示例分享(文件操作类)
Apr 13 PHP
dedecms函数分享之获取某一栏目所有子栏目
May 19 PHP
ThinkPHP处理Ajax返回的方法
Nov 22 PHP
Symfony页面的基本创建实例详解
Jan 26 PHP
php获取指定范围内最接近数的方法
Jun 02 PHP
PHP+Javascript实现在线拍照功能实例
Jul 18 PHP
yii使用activeFileField控件实现上传文件与图片的方法
Dec 28 PHP
php版微信公众平台回复中文出现乱码问题的解决方法
Sep 22 PHP
Laravel5.5 视图 - 创建视图和数据传递示例
Oct 21 PHP
PHP实现的mysql主从数据库状态检测功能示例
Jul 20 #PHP
php检测mysql表是否存在的方法小结
Jul 20 #PHP
Laravel接收前端ajax传来的数据的实例代码
Jul 20 #PHP
php脚本守护进程原理与实现方法详解
Jul 20 #PHP
ubutu 16.04环境下,PHP与mysql数据库,网页登录验证实例讲解
Jul 20 #PHP
thinkphp3.2实现在线留言提交验证码功能
Jul 19 #PHP
ThinkPHP框架表单验证操作方法
Jul 19 #PHP
You might like
利用PHP访问带有密码的Redis方法示例
2017/02/09 PHP
分享一个用Mootools写的鼠标滑过进度条改变进度值的实现代码
2011/12/12 Javascript
网站如何做到完全不需要jQuery也可以满足简单需求
2013/06/27 Javascript
JQuery操作三大控件(下拉,单选,复选)的方法
2013/08/06 Javascript
Javascript玩转继承(三)
2014/05/08 Javascript
JavaScript中判断变量是数组、函数或是对象类型的方法
2015/02/25 Javascript
JavaScript访问字符串中单个字符的两种方法
2015/07/03 Javascript
JavaScript、tab切换完整版(自动切换、鼠标移入停止、移开运行)
2016/01/05 Javascript
vue2利用Bus.js如何实现非父子组件通信详解
2017/08/25 Javascript
React Native时间转换格式工具类分享
2017/10/24 Javascript
详解bootstrap导航栏.nav与.navbar区别
2017/11/23 Javascript
js 将canvas生成图片保存,或直接保存一张图片的实现方法
2018/01/02 Javascript
开发一个Parcel-vue脚手架工具(详细步骤)
2018/09/22 Javascript
详解如何制作并发布一个vue的组件的npm包
2018/11/10 Javascript
微信小程序代码上传、审核发布小程序
2019/05/18 Javascript
Node.js在图片模板上生成二维码图片并附带底部文字说明实现详解
2019/08/07 Javascript
JavaScript实现轮播图效果
2020/10/30 Javascript
[09:59]DOTA2-DPC中国联赛2月7日Recap集锦
2021/03/11 DOTA
Python实现比较两个文件夹中代码变化的方法
2015/07/10 Python
关于numpy中np.nonzero()函数用法的详解
2017/02/07 Python
Pandas中DataFrame的分组/分割/合并的实现
2019/07/16 Python
Python及Pycharm安装方法图文教程
2019/08/05 Python
使用Python代码实现Linux中的ls遍历目录命令的实例代码
2019/09/07 Python
Python socket模块方法实现详解
2019/11/05 Python
基于python检查矩阵计算结果
2020/05/21 Python
python实现计算器简易版
2020/12/17 Python
python+opencv实现车道线检测
2021/02/19 Python
很酷的小工具和电子产品商城:GearBest
2016/11/19 全球购物
什么是跨站脚本攻击
2014/12/11 面试题
中专生自我鉴定范文
2013/12/19 职场文书
上班迟到检讨书
2014/01/10 职场文书
离婚协议书怎么写
2015/01/26 职场文书
纪律委员竞选稿
2015/11/19 职场文书
Pandas||过滤缺失数据||pd.dropna()函数的用法说明
2021/05/14 Python
美国运营商 T-Mobile 以 117.83Mb/s 的速度排第一位
2022/04/21 数码科技
Golang 实现WebSockets
2022/04/24 Golang