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 set_magic_quotes_runtime() 函数过时解决方法
Jul 08 PHP
PHP删除非空目录的函数代码小结
Feb 28 PHP
深入apache host的配置详解
Jun 09 PHP
使用PHP获取当前url路径的函数以及服务器变量
Jun 29 PHP
ThinkPHP中的系统常量和预定义常量集合
Jul 01 PHP
PHP编程中的常见漏洞和代码实例
Aug 06 PHP
PHP线程的内存回收问题
Jul 08 PHP
微信网页授权(OAuth2.0) PHP 源码简单实现
Aug 29 PHP
php之可变函数的实例详解
Sep 13 PHP
PHP分页显示的方法分析【附PHP通用分页类】
May 10 PHP
PHP chunk_split()函数讲解
Feb 12 PHP
Thinkphp5框架ajax接口实现方法分析
Aug 28 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
PHP5.3.1 不再支持ISAPI
2010/01/08 PHP
PHP文件与目录操作示例
2016/12/24 PHP
PHP-FPM 的管理和配置详解
2019/02/17 PHP
PHP中的自动加载操作实现方法详解
2019/08/06 PHP
html5的自定义data-*属性和jquery的data()方法的使用示例
2013/08/21 Javascript
JS保存和删除cookie操作 判断cookie是否存在
2013/11/13 Javascript
node.js中的fs.truncateSync方法使用说明
2014/12/15 Javascript
JavaScript实现添加及删除事件的方法小结
2015/08/04 Javascript
基于Jquery插件Uploadify实现实时显示进度条上传图片
2020/03/26 Javascript
封装获取dom元素的简单实例
2016/07/08 Javascript
基于jQuery实现表格内容的筛选功能
2016/08/21 Javascript
什么是JavaScript注入攻击?
2016/09/14 Javascript
JS常见简单正则表达式验证功能小结【手机,地址,企业税号,金额,身份证等】
2017/01/22 Javascript
几行js代码实现自适应
2017/02/24 Javascript
Vue + Webpack + Vue-loader学习教程之功能介绍篇
2017/03/14 Javascript
JavaScript使用atan2来绘制箭头和曲线的实例
2017/09/14 Javascript
Vue.js实现表格渲染的方法
2018/09/07 Javascript
vue+elementUI实现表单和图片上传及验证功能示例
2019/05/14 Javascript
如何实现双向绑定mvvm的原理实现
2019/05/28 Javascript
Vue仿微信app页面跳转动画效果
2019/08/21 Javascript
[49:29]LGD vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
Django 根据数据模型models创建数据表的实例
2018/05/27 Python
python turtle库画一个方格和圆实例
2019/06/27 Python
Django REST框架创建一个简单的Api实例讲解
2019/11/05 Python
Django Haystack 全文检索与关键词高亮的实现
2020/02/17 Python
详解Django自定义图片和文件上传路径(upload_to)的2种方式
2020/12/01 Python
Canvas实现贝赛尔曲线轨迹动画的示例代码
2019/04/25 HTML / CSS
Crucial英睿达法国官网:内存条及SSD固态硬盘升级
2018/07/13 全球购物
义诊活动总结
2015/02/04 职场文书
2015年企业员工工作总结范文
2015/05/21 职场文书
刑事附带民事诉讼答辩状
2015/05/22 职场文书
失恋33天观后感
2015/06/11 职场文书
中小学教师继续教育心得体会
2016/01/19 职场文书
教师个人教学反思
2016/02/23 职场文书
golang 比较浮点数的大小方式
2021/05/02 Golang
JS代码编译器Monaco使用方法
2021/06/11 Javascript