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