天天看點

伺服器報警資訊如何及時接到通知?

最近上司布置了一個任務,說伺服器報警需要通過短信或者語音的方式及時通知到相關人員。網上找了一圈,找到一個平台,測試了下,效果還不錯

代碼示例:

//接口類型:互億無線觸發短信接口,支援發送驗證碼短信、訂單通知短信等。
 // 賬戶注冊:請通過該位址開通賬戶 http://user.ihuyi.com/?9vXc7
 // 注意事項:
 //(1)調試期間,請使用用系統預設的短信内容:您的驗證碼是:【變量】。請不要把驗證碼洩露給其他人。
 //(2)請使用 APIID 及 APIKEY來調用接口,可在會員中心擷取;
 //(3)該代碼僅供接入互億無線短信接口參考使用,客戶可根據實際需要自行編寫;
 
//開啟SESSION
session_start();
 
header("Content-type:text/html; charset=UTF-8");
 
//請求資料到短信接口,檢查環境是否 開啟 curl init。
function Post($curlPost,$url){
        $curl = curl_init();
        curl_setopt($curl, CURLOPT_URL, $url);
        curl_setopt($curl, CURLOPT_HEADER, false);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($curl, CURLOPT_NOBODY, true);
        curl_setopt($curl, CURLOPT_POST, true);
        curl_setopt($curl, CURLOPT_POSTFIELDS, $curlPost);
        $return_str = curl_exec($curl);
        curl_close($curl);
        return $return_str;
}
 
//将 xml資料轉換為數組格式。
function xml_to_array($xml){
    $reg = "/<(\w+)[^>]*>([\\x00-\\xFF]*)<\\/\\1>/";
    if(preg_match_all($reg, $xml, $matches)){
        $count = count($matches[0]);
        for($i = 0; $i < $count; $i++){
        $subxml= $matches[2][$i];
        $key = $matches[1][$i];
            if(preg_match( $reg, $subxml )){
                $arr[$key] = xml_to_array( $subxml );
            }else{
                $arr[$key] = $subxml;
            }
        }
    }
    return $arr;
}
 
//random() 函數傳回随機整數。
function random($length = 6 , $numeric = 0) {
    PHP_VERSION < '4.2.0' && mt_srand((double)microtime() * 1000000);
    if($numeric) {
        $hash = sprintf('%0'.$length.'d', mt_rand(0, pow(10, $length) - 1));
    } else {
        $hash = '';
        $chars = 'ABCDEFGHJKLMNPQRSTUVWXYZ23456789abcdefghjkmnpqrstuvwxyz';
        $max = strlen($chars) - 1;
        for($i = 0; $i < $length; $i++) {
            $hash .= $chars[mt_rand(0, $max)];
        }
    }
    return $hash;
}
//短信接口位址
$target = "http://106.ihuyi.com/webservice/sms.php?method=Submit";
//擷取手機号
$mobile = $_POST['mobile'];
//擷取驗證碼
$send_code = $_POST['send_code'];
//生成的随機數
$mobile_code = random(4,1);
if(empty($mobile)){
    exit('手機号碼不能為空');
}
//防使用者惡意請求
if(empty($_SESSION['send_code']) or $send_code!=$_SESSION['send_code']){
    exit('請求逾時,請重新整理頁面後重試');
}
 
$post_data = "account=使用者名&password=密碼&mobile=".$mobile."&content=".rawurlencode("您的驗證碼是:".$mobile_code."。請不要把驗證碼洩露給其他人。");
//檢視使用者名 登入使用者中心->驗證碼通知短信>産品總覽->API接口資訊->APIID
//檢視密碼 登入使用者中心->驗證碼通知短信>産品總覽->API接口資訊->APIKEY
$gets =  xml_to_array(Post($post_data, $target));
if($gets['SubmitResult']['code']==2){
    $_SESSION['mobile'] = $mobile;
    $_SESSION['mobile_code'] = $mobile_code;
}
echo $gets['SubmitResult']['msg'];
      
           

特别重要資訊通知的場景,需要使用者能收到且關注到資訊,采用短信+語音通知同步推送的方式。

語音通知代碼示例:

//接口類型:互億無線語音通知接口。
//賬戶注冊:請通過該位址開通賬戶 http://user.ihuyi.com/?9vXc7
//注意事項:
//(1)調試期間,請仔細閱讀接口文檔;
//(2)請使用APIID(檢視APIID請登入使用者中心->語音通知->帳戶及簽名設定->APIID)及 APIkey來調用接口;
//(3)該代碼僅供接入互億無線語音通知接口參考使用,客戶可根據實際需要自行編寫;

header("Content-type:text/html; charset=UTF-8");

function Post($curlPost,$url){
		$curl = curl_init();
		curl_setopt($curl, CURLOPT_URL, $url);
		curl_setopt($curl, CURLOPT_HEADER, false);
		curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
		curl_setopt($curl, CURLOPT_NOBODY, true);
		curl_setopt($curl, CURLOPT_POST, true);
		curl_setopt($curl, CURLOPT_POSTFIELDS, $curlPost);
		$return_str = curl_exec($curl);
		curl_close($curl);
		return $return_str;
}
function xml_to_array($xml){
	$reg = "/<(\w+)[^>]*>([\\x00-\\xFF]*)<\\/\\1>/";
	if(preg_match_all($reg, $xml, $matches)){
		$count = count($matches[0]);
		for($i = 0; $i < $count; $i++){
		$subxml= $matches[2][$i];
		$key = $matches[1][$i];
			if(preg_match( $reg, $subxml )){
				$arr[$key] = xml_to_array( $subxml );
			}else{
				$arr[$key] = $subxml;
			}
		}
	}
	return $arr;
}

$target = "http://api.vm.ihuyi.com/webservice/voice.php?method=Submit";
$mobile = '136xxxxxxxx';//手機号碼
$post_data = "account=使用者名&password=密碼&mobile=".$mobile."&content=您的訂單号是:0648。已由順風快遞發出,請注意查收。";
//使用者名是登入使用者中心->語音通知->帳戶參數設定->APIID
//檢視密碼請登入使用者中心->語音通知->帳戶參數設定->APIKEY
$gets =  xml_to_array(Post($post_data, $target));
if($gets['SubmitResult']['code']==2){
	echo '送出成功';
}
           
伺服器報警資訊如何及時接到通知?

繼續閱讀