现在的位置: 首页 > 综合 > 正文

处理xml格式接口

2018年04月14日 ⁄ 综合 ⁄ 共 2934字 ⁄ 字号 评论关闭

$date = date('Y-m-d_G:i:s');                                                           
$number=array();                                                                       
$command = "curl -d \"<?xml version='1.0' encoding='iso-8859-1................'//xml格式文本处理
function cur_xml($result){
$xml = simplexml_load_string($result); //XML字符串载入对象
$xml = (int) $xml->params->param->value->int;//获取状态码
return $xml;
}
                                                                                       
//html格式文本处理
function cur_html($result){
$html = preg_replace("/.*<title>/is",'',$result);//将title之前内容替换
$html = preg_replace("/<\/title>.*/is",'',$html);//将/title之后的内容替换,截取出title之前的内容
return $html;
}
                                                                       
//调用接口返回值
function cur_url($command) {
$url = popen($command, "r");//执行curl -d
$url = fgets($url);//取得结果
$url = mb_convert_encoding($url, "GBK", "UTF-8");//字符编码转换
return $url;
pclose($fp);
}
//截取关键字,判断
$result=cur_url($command);
$a=substr($result,0,5);
switch ($a) {
case "<html":
        echo "返回结果类型:"." html格式"."\n";
        $result = cur_html($result);
        $status=0;
        break;
case "<?xml":
        echo "返回结果类型:"." xml格式"."\n";
        $result = cur_xml($result);
        if ($result ==1){
                $status=1;
        }else{
                $status=0;
        }
        break;
default:
        $result="未知错误,请测试4个接口IP的连通性";
        $status=0;
        break;
}
$num=1;
$new=1;
//判断文件是否存在
if (!file_exists("user_door")) {
    file_put_contents("user_door", "");//文件不存在则创建文件
}

//打开文件,更新返回结果的值
$fp = fopen("user_door", "r");
$all = "";
$stat = true;//设置状态值,用于判断返回的结果名是否存在

//用于统计出总数
$count=file("user_door");//file会将所有行存入数组
foreach ($count as $value) {
    $n = explode(',', $value);//以,分隔,存入数组
    $num=$n[1]+$num;//累加所有结果出现次数
}

//遍历文件内容,用于查找结果名是否存在,存在则更新对应的值
while (!feof($fp)) {
    $s = fgets($fp, 4096);//获取文件的一行数据
    $a = explode(',', $s);//将一行数据以,分隔成数组
    //结果名判断是否存在
    if ($a[0] == $result) {
        $new=$a[1]+1;
        //echo $new;
        $a[1] = "$new\n";//更新对应的值
        $s = join(',', $a);//将数组以,整合成一行字符串
        $stat = false;//状态值,说明返回结果名是存在的,并已经更新对应的值
    }
    $all .= $s;
}
//如果返回的结果名不存在,则插入新值
if ($stat) {
    $all .= "$result,$new\n";
}
fclose($fp);//关闭连接,保存数据
//打开连接,将处理过的字符串存放文件
$fp = fopen("user_door", "w");
fwrite($fp, $all);
fclose($fp);

//每周-的11:00 将发送状态报告
if ( date ("w")==1 && date("G:i")=="11:00")
{
$status=2;
}
echo "状态值".$status."时间".$date."\n";
//清空上周统计数据,重新计监控数据
if ( date ("w")==1 && date("G:i")=="11:03")
{
$clear = fopen("user_door", "w");
fwrite($clear, "");
fclose($clear);
exit;//添加exit是因为一分钟内可能会时行两到三次清空,可能会有误报警。
}

//if ( $status==0 or $status==2)
//{
//将数据整合成一条字符串
$str="";
$fp1 = fopen ("user_door","r");
 while (!feof($fp1))
 {
     $s= fgets($fp1);
     $a=explode(",", $s);
     $q=(int)($a[1]/$num*100)."%";//计算每种结果的百分比
     //添加判断是因为最后会有一条空值,避免将空值整合
     if ($a[0]!=FALSE){
 if ($a[0]=="1"){
  $a[0]="1(接口正常)";
 } 
        if ($a[0]=="-4"){
  $a[0]="-4(数据库错误)";
 }
       
     $str .="状态值:".str_replace(' ','',$a[0])."出现次数:".trim($a[1])."百分比:".$q."--";//将所有结果整合成相应格式
     }
 }
 fclose($fp1);
 $number="访问接口总数:".$num."-"."结果分析:".$str;
 echo $number;
 file_get_contents()调用报警接口

抱歉!评论已关闭.