阿里云国际轻量流量监控 关机 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_();
?>