本文实例讲述了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程序设计有所帮助。