实例:

    1. <?php
    2. /**
    3. * 检测多个主从数据库是否挂掉
    4. * 建立从数据库$slave_db的二维数组,内容包含每个从服务器的配置数据
    5. */
    6. header("Content-Type: text/html; charset=utf-8");
    7. set_time_limit(0);
    8. $slave_db = array(
    9. 'db1'=>array(
    10. 'hostname' => '127.0.0.1',
    11. 'port' => 3306,
    12. 'database' => 'test',
    13. 'username' => 'root',
    14. 'password' => '111111',
    15. 'charset' => 'utf8',
    16. ),
    17. 'db2'=>array(
    18. 'hostname' => '127.0.0.2',
    19. 'port' => 3306,
    20. 'database' => 'test',
    21. 'username' => 'root',
    22. 'password' => '111111',
    23. 'charset' => 'utf8',
    24. ),
    25. );
    26. $content = '';
    27. foreach ($slave_db as $db_key) {
    28. $host = $db_key['hostname'];
    29. $port = $db_key['port'];
    30. $db_user = $db_key['username'];
    31. $db_pass = $db_key['password'];
    32. $slave_link = mysql_connect($host,$db_user,$db_pass);
    33. if(mysql_errno()) {
    34. $content .= "从数据库( $host )无法连接 ! <br/>";
    35. $content .= mysql_error() . "<br/>";
    36. continue;
    37. }
    38. $sql = "show slave status";
    39. $result = mysql_query($sql, $slave_link);
    40. $row = mysql_fetch_assoc($result);
    41. $Slave_IO_Running = $row['Slave_IO_Running'];
    42. $Slave_SQL_Running = $row['Slave_SQL_Running'];
    43. if ('Yes' == $Slave_IO_Running && 'Yes' == $Slave_SQL_Running) {
    44. } else {
    45. $content .= "从数据库( $host )挂掉了! <br/>";
    46. }
    47. mysql_free_result($result);
    48. mysql_close($slave_link);
    49. }
    50. //若报错信息不为空,发送报错邮件
    51. if(!empty($content)) {
    52. $title = '主从数据库状态检测报错 ';
    53. $content = date("Y-m-d H:i:s",time()) . "<br/>" . $content;
    54. $sendurl = "http://localhost/api.ftrend.com/test.php?title=".$title."&content=".$content;
    55. $result = file_get_contents($sendurl);
    56. if('ok' != $result) {
    57. $message = date("Y-m-d H:i:s",time()).'slaveStatus.php主从数据库状态检测报错,邮件发送失败!'."\n";
    58. $content = str_replace("<br/>", "\n", $content);
    59. $message .= $content;
    60. error_log($message,3,"error.log");
    61. }
    62. }
    <?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';