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 相关文章推荐
PHP数据库操作面向对象的优点
Oct 09 PHP
一个很不错的PHP翻页类
Jun 01 PHP
用PHP读取和编写XML DOM的实现代码
Feb 03 PHP
php中判断字符串是否全是中文或含有中文的实现代码
Sep 16 PHP
php提示无法加载或mcrypt没有找到 PHP 扩展 mbstring解决办法
Mar 27 PHP
php添加文章时生成静态HTML文章的实现代码
Feb 17 PHP
探讨:parse url解析URL,返回其组成部分
Jun 14 PHP
基于xcache的配置与使用详解
Jun 18 PHP
PHP base64编码后解码乱码的解决办法
Jun 19 PHP
yii2整合百度编辑器umeditor及umeditor图片上传问题的解决办法
Apr 20 PHP
PHP实现的简单操作SQLite数据库类与用法示例
Jun 19 PHP
PHP常用操作类之通信数据封装类的实现
Jul 16 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
深入mysql_fetch_row()与mysql_fetch_array()的区别详解
2013/06/05 PHP
探讨:如何编写PHP扩展
2013/06/13 PHP
利用php下载xls文件(自己动手写的)
2014/04/18 PHP
PHP使用JSON和将json还原成数组
2015/02/12 PHP
浅谈Yii乐观锁的使用及原理
2017/07/25 PHP
thinkPHP框架实现的简单计算器示例
2018/12/07 PHP
PHP 计算至少是其他数字两倍的最大数的实现代码
2020/05/26 PHP
js编码、解码函数介绍及其使用示例
2013/09/05 Javascript
form.submit()不能提交表单的错误原因及解决方法
2014/10/13 Javascript
javascript实现可拖动变色并关闭层窗口实例
2015/05/15 Javascript
理解JavaScript原型链
2016/10/25 Javascript
整理关于Bootstrap过渡动画的慕课笔记
2017/03/29 Javascript
ES6使用let命令更简单的实现块级作用域实例分析
2017/03/31 Javascript
jQuery选择器特殊字符与属性空格问题
2017/08/14 jQuery
Vue.js样式动态绑定实现小结
2019/01/24 Javascript
小程序hover-class点击态效果实现
2019/02/26 Javascript
[01:14:34]DOTA2上海特级锦标赛C组资格赛#2 LGD VS Newbee第一局
2016/02/28 DOTA
python生成不重复随机数和对list乱序的解决方法
2018/04/09 Python
django反向解析和正向解析的方式
2018/06/05 Python
Puppeteer使用示例详解
2019/06/20 Python
Python的Tkinter点击按钮触发事件的例子
2019/07/19 Python
关于初始种子自动选取的区域生长实例(python+opencv)
2020/01/16 Python
Python使用requests xpath 并开启多线程爬取西刺代理ip实例
2020/03/06 Python
利用CSS3实现文字折纸效果实例代码
2018/07/10 HTML / CSS
html5 css3实例教程 一款html5和css3实现的小机器人走路动画
2014/10/20 HTML / CSS
骆驼官方商城:CAMEL
2016/11/22 全球购物
番木瓜健康和保健产品第一大制造商:Herbal Papaya
2017/04/25 全球购物
MYSQL基础面试题
2012/05/13 面试题
成人毕业生自我鉴定
2013/10/18 职场文书
开业庆典答谢词
2014/01/18 职场文书
个人评语大全
2014/05/04 职场文书
城管执法人员纪律作风整顿思想汇报
2014/09/13 职场文书
考研英语辞职信
2015/05/13 职场文书
go语言求任意类型切片的长度操作
2021/04/26 Golang
python DataFrame中stack()方法、unstack()方法和pivot()方法浅析
2022/04/06 Python
Golang map映射的用法
2022/04/22 Golang