<?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;
}