选服列表文件检测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; }