本文实例讲述了PHP实现的redis主从数据库状态检测功能。分享给大家供大家参考,具体如下:
实例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
|
<?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程序设计有所帮助。