阿里云国际轻量流量监控 关机 php

阿里云国际轻量流量监控 关机 php


https://hostloc.com/thread-1226493-1-1.html

<?php

error_reporting(0);

  $AccessKey_ID='xxxxxxxxxxxxxxxxxxx';//AccessKey_ID

  $Access_Key_Secret='xxxxxxxxxxxxxxxxxxx';//Access_Key_Secret

//服务地址,分国内国外,可能是速度不一样吧

//https://next.api.aliyun.com/product/SWAS-OPEN

$swas_url = "swas.cn-hongkong.aliyuncs.com";

//实例ID列表,JSON数组 例如"[\"2ad1ae67295445f598017499dc******\",\"2ad1ae67295445f598017499dc******\"]"

  $InstanceIds = '["2ad1ae67295445f598017499dc"]';

//地域ID

$RegionId = 'cn-hongkong';

     

  function percentEncode($str){

    // 使用urlencode编码后,将"+","*","%7E"做替换即满足API规定的编码规范

    $res = urlencode($str);

    $res = preg_replace('/\+/', '%20', $res);

    $res = preg_replace('/\*/', '%2A', $res);

    $res = preg_replace('/%7E/', '~', $res);

    return $res;

  }

  function computeSignature($parameters, $accessKeySecret){

    // 将参数Key按字典顺序排序

    ksort($parameters);

    // 生成规范化请求字符串

    $canonicalizedQueryString = '';

    foreach($parameters as $key => $value)

    {

$canonicalizedQueryString .= '&' . percentEncode($key)

. '=' . percentEncode($value);


    }

    // 生成用于计算签名的字符串 stringToSign

    $stringToSign = 'GET&%2F&' . percentencode(substr($canonicalizedQueryString, 1));

    // 计算签名,注意accessKeySecret后面要加上字符'&'

    $signature = base64_encode(hash_hmac('sha1', $stringToSign, $accessKeySecret . '&', true));

return $signature;

  }

  function get_action($data,$Version,$host){

    date_default_timezone_set("GMT");

    $dateTimeFormat = 'Y-m-d\TH:i:s\Z';

    global $AccessKey_ID;

    global $Access_Key_Secret;

    $publicdata = array(

      // 公共参数

      'Format' => 'JSON',

      'Version' => $Version,

      'AccessKeyId' => $AccessKey_ID,

      'SignatureVersion' => '1.0',

      'SignatureMethod' => 'HMAC-SHA1',

      'SignatureNonce'=> uniqid(),

      'Timestamp' => date($dateTimeFormat),

      'TimeStamp' => date($dateTimeFormat)

    );

    $data = array_merge($publicdata,$data);

    $data['Signature'] = computeSignature($data, $Access_Key_Secret);

    $ch = curl_init();

    curl_setopt($ch, CURLOPT_URL, $host . http_build_query($data));

    curl_setopt($ch, CURLOPT_HEADER, 0);

    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);

    $res = curl_exec($ch);

    date_default_timezone_set('PRC');

    return $res;

  }

function formatBytes($size) {


$units = array(' B', ' KB', ' MB', ' GB', ' TB');


for ($i = 0; $size >= 1024 && $i < 4; $i++) {


$size /= 1024;


}

return round($size, 2).$units[$i];


}

  //流量JSON

  function get_(){

global $swas_url;

global $InstanceIds;

global $RegionId;

    $data = array(

'Action' => 'ListInstancesTrafficPackages',

'InstanceIds' => $InstanceIds,

'RegionId' => $RegionId,

);


$res = (string)get_action($data,'2020-06-01','https://'.$swas_url.'/?');

    //echo $res;

    $jsonarray = json_decode($res,true);

//print_r($jsonarray);

    if(isset($jsonarray['InstanceTrafficPackageUsages']) && !empty($jsonarray['InstanceTrafficPackageUsages'])){

//返回的实例ID

$InstanceId = $jsonarray['InstanceTrafficPackageUsages'][0]['InstanceId'];

//剩余流量,转换一下容易看

$TrafficPackageRemaining = $jsonarray['InstanceTrafficPackageUsages'][0]['TrafficPackageRemaining'];

echo $InstanceId.' : '.formatBytes($TrafficPackageRemaining);

//echo PHP_EOL;

//15GB 16106127360

if($TrafficPackageRemaining <= 16106127360){//这里判断流量小于等于15G 

StopInstance();

}

    }

  }

  function StopInstance(){

global $RegionId;

global $InstanceIds;

global $swas_url;

//https://api.alibabacloud.com/api/SWAS-OPEN/2020-06-01/StopInstances

    $data = array(

          'Action' => 'StopInstances',

          'regionId' => $RegionId,

          'InstanceIds' => $InstanceIds,

          'ForceStop' =>"true"

        );

    $res = (string)get_action($data,'2020-06-01','https://'.$swas_url.'/?');

    echo $res;

  }

  get_();

?>

Report Page