Heim >Backend-Entwicklung >PHP-Tutorial >PHP implementiert die Redis-Master-Slave-Datenbankstatuserkennungsfunktion

PHP implementiert die Redis-Master-Slave-Datenbankstatuserkennungsfunktion

小云云
小云云Original
2018-02-06 09:35:051001Durchsuche

In diesem Artikel wird hauptsächlich die von PHP implementierte Redis-Master-Slave-Datenbankstatuserkennungsfunktion vorgestellt, die PHPs Verbindungs-, Erkennungs-, Fehlermeldungsausgabe- und E-Mail-Versandfähigkeiten für mehrere Redis-Master-Slave-Datenbanken umfasst Ich hoffe, es hilft allen.

Beispiel:


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

Verwandte Empfehlungen:

Detaillierte Erklärung zum Aufbau einer Master-Slave-Datenbank MySQL

Wie implementiert man die Redis-Master-Slave-Datenbankstatuserkennungsfunktion mit PHP?

Gemeinsame Redis-Befehle und Master-Slave-Datenbankkonfiguration

Das obige ist der detaillierte Inhalt vonPHP implementiert die Redis-Master-Slave-Datenbankstatuserkennungsfunktion. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn