选服列表文件检测demo

<?php
/**
 * @doc 选服列表文件检测
 */
 
//cdn源站目录
$res_dir = '/data/cdn';
$android_dir = $res_dir . '/android/server_list';
$ios_dir = $res_dir . '/ios/server_list';

read_dir($android_dir);
read_dir($ios_dir);

/*
 * 目录结构:
 * v1.0.1
 *      server_list_000001.xml
 *      server_list_000002.xml
 * v1.0.2
 *      server_list_000001.xml
 *      server_list_000002.xml
 */
/**
 * 读跟目录
 * @param string $dir
 * @return boolean
 */
function read_dir($dir) {
    if( ! is_dir($dir) ) {
        return false;
    }
    
    if ($handle = opendir($dir)) {
        while (false !== ($ver_dir = readdir($handle))) {
            $ver_dir2 = $dir . '/' . $ver_dir;
            if(is_dir($ver_dir2) && $ver_dir != '.' && $ver_dir != '..') {
                if(substr($ver_dir, 0, 1) == 'v') {
                    read_sub_dir($ver_dir2, $ver_dir);
                }
            }
        }
        closedir($handle);
    }
}

/**
 * 读版本号目录
 * @param string $dir
 * @return boolean
 */
function read_sub_dir($dir, $ver) {
    if( ! is_dir($dir) ) {
        return false;
    }
    
    if ($handle = opendir($dir)) {
        while (false !== ($file = readdir($handle))) {
            $file2 = $dir . '/' . $file;
            if(is_file($file2) && $file != '.' && $file != '..') {
                if(substr($file, 0, 12) == 'server_list_' && substr($file, -4) == '.xml') {
                    $channel = substr($file, 12, 6);
                    $ret = read_xml($file2);
                    echo $ver . '|' . $channel . '|' . $ret[0] . '|' . $ret[1] . "\n";
                }
            }
        }
        closedir($handle);
    }
}

/**
 * 分析xml文件
 * @param xml文件
 * @return array
 */
function read_xml($xml) {
    $xml = simplexml_load_file($xml);
    $item = $xml->product[0];
    if(count($item) > 1) {
        $key = count($item) - 1;
    } else {
        $key = 0;
    }
    $ret = array(
        $item->server[$key]['id'],
        $item->server[$key]['name'],
    );
    return $ret;
}

 

posted @ 2018-07-02 10:24  lonmy  阅读(246)  评论(0编辑  收藏  举报