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 FTP操作类代码( 上传、拷贝、移动、删除文件/创建目录)
May 10 PHP
CI框架装载器Loader.php源码分析
Nov 04 PHP
分享一个Laravel好用的Cache宏
Mar 02 PHP
php开发中的页面跳转方法总结
Apr 26 PHP
PHP连接MYSQL数据库实例代码
Jan 20 PHP
PHP中new static()与new self()的比较
Aug 19 PHP
php无限级分类实现方法分析
Oct 19 PHP
PHP判断json格式是否正确的实现代码
Sep 20 PHP
PHP+Ajax实现的博客文章添加类别功能示例
Mar 29 PHP
PHP PDOStatement::getColumnMeta讲解
Feb 01 PHP
PHP实时统计中文字数和区别
Feb 28 PHP
Yii框架中使用PHPExcel的方法分析
Jul 25 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
历史证明,懒惰才是推动科学发展技术进步的动力
2021/03/02 无线电
现磨咖啡骗局!现磨咖啡=新鲜咖啡?现磨咖啡背后的猫腻你不懂!
2019/03/28 冲泡冲煮
php中防止SQL注入的最佳解决方法
2013/04/25 PHP
ThinkPHP模板判断输出Defined标签用法详解
2014/06/30 PHP
php网页病毒清除类
2014/12/08 PHP
PHP创建对象的六种方式实例总结
2019/06/27 PHP
推荐dojo学习笔记
2007/03/24 Javascript
javascript 子窗体父窗体相互传值方法
2010/05/31 Javascript
js实现遮罩层划出效果是生成div而不是显示
2014/07/29 Javascript
touch.js 拖动、缩放、旋转 (鼠标手势)功能代码
2017/02/04 Javascript
微信小程序 五星评价功能的实现
2017/03/09 Javascript
Vue引用第三方datepicker插件无法监听datepicker输入框的值的解决
2018/01/27 Javascript
Webpack中雪碧图插件使用详解
2018/05/25 Javascript
使用nvm和nrm优化node.js工作流的方法
2019/01/17 Javascript
vue.js 打包时出现空白页和路径错误问题及解决方法
2019/06/26 Javascript
微信小程序中网络请求缓存的解决方法
2019/12/29 Javascript
小程序中手机号识别的示例
2020/12/14 Javascript
Python中使用item()方法遍历字典的例子
2014/08/26 Python
Python3实现的字典、列表和json对象互转功能示例
2018/05/22 Python
用PyInstaller把Python代码打包成单个独立的exe可执行文件
2018/05/26 Python
浅谈PyTorch中in-place operation的含义
2020/06/27 Python
Django 实现图片上传和下载功能
2020/12/31 Python
Python实现淘宝秒杀功能的示例代码
2021/01/19 Python
浅谈CSS3 box-sizing 属性 有趣的盒模型
2019/04/02 HTML / CSS
利用HTML5 Canvas制作键盘及鼠标动画的实例分享
2016/03/15 HTML / CSS
HTML5 manifest离线缓存的示例代码
2018/08/08 HTML / CSS
瑜伽国际:Yoga International
2018/04/18 全球购物
Wiggle新西兰:自行车、跑步、游泳
2020/05/06 全球购物
Python面试题集
2012/03/08 面试题
护士专业推荐信
2013/11/02 职场文书
金融管理应届生求职信
2014/02/20 职场文书
《在大海中永生》教学反思
2014/02/24 职场文书
金融保险专业求职信
2014/09/03 职场文书
股东合作协议书模板2篇
2019/11/05 职场文书
用JS实现飞机大战小游戏
2021/06/09 Javascript
nginx负载功能+nfs服务器功能解析
2022/02/28 Servers