本文实例讲述了PHP实现的mysql主从数据库状态检测功能。分享给大家供大家参考,具体如下:
实例:
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
/**
* 检测多个主从数据库是否挂掉
* 建立从数据库$slave_db的二维数组,内容包含每个从服务器的配置数据
*/
header( "Content-Type: text/html; charset=utf-8" );
set_time_limit(0);
$slave_db = array (
'db1' => array (
'hostname' => '127.0.0.1' ,
'port' => 3306,
'database' => 'test' ,
'username' => 'root' ,
'password' => '111111' ,
'charset' => 'utf8' ,
),
'db2' => array (
'hostname' => '127.0.0.2' ,
'port' => 3306,
'database' => 'test' ,
'username' => 'root' ,
'password' => '111111' ,
'charset' => 'utf8' ,
),
);
$content = '' ;
foreach ( $slave_db as $db_key ) {
$host = $db_key [ 'hostname' ];
$port = $db_key [ 'port' ];
$db_user = $db_key [ 'username' ];
$db_pass = $db_key [ 'password' ];
$slave_link = mysql_connect( $host , $db_user , $db_pass );
if (mysql_errno()) {
$content .= "从数据库( $host )无法连接 ! <br/>" ;
$content .= mysql_error() . "<br/>" ;
continue ;
}
$sql = "show slave status" ;
$result = mysql_query( $sql , $slave_link );
$row = mysql_fetch_assoc( $result );
$Slave_IO_Running = $row [ 'Slave_IO_Running' ];
$Slave_SQL_Running = $row [ 'Slave_SQL_Running' ];
if ( 'Yes' == $Slave_IO_Running && 'Yes' == $Slave_SQL_Running ) {
} else {
$content .= "从数据库( $host )挂掉了! <br/>" ;
}
mysql_free_result( $result );
mysql_close( $slave_link );
}
//若报错信息不为空,发送报错邮件
if (! empty ( $content )) {
$title = '主从数据库状态检测报错 ' ;
$content = date ( "Y-m-d H:i:s" ,time()) . "<br/>" . $content ;
$sendurl = "http://localhost/api.ftrend.com/test.php?title=" . $title . "&content=" . $content ;
$result = file_get_contents ( $sendurl );
if ( 'ok' != $result ) {
$message = date ( "Y-m-d H:i:s" ,time()). 'slaveStatus.php主从数据库状态检测报错,邮件发送失败!' . "\n" ;
$content = str_replace ( "<br/>" , "\n" , $content );
$message .= $content ;
error_log ( $message ,3, "error.log" );
}
}
|
1
2
3
4
5
6
7
|
<?php
$title = $_GET [ 'title' ];
$content = $_GET [ 'content' ];
$content = str_replace ( "<br/>" , "\n" , $content );
error_log ( $title . "\n" ,3, 'error.log' );
error_log ( $content . "\n" ,3, 'error.log' );
echo 'ok' ;
|
希望本文所述对大家PHP程序设计有所帮助。