fclose($fp);
    return null;
}
//get version file
if (is_dir($version_dir)) {
    if ($dh = opendir($version_dir)) {
        while (($file = readdir($dh)) != false) {
            list($file_name, $file_ex) = split('[.]', $file);
            if ($file_ex != "json") {
                continue;
            }
            list($file_version, $file_time) = split("[_]", $file_name);
            // echo $file_name." - ".$file_ex." - ".$file_time." - ".$file_version."\n";
            //get path
            $filePath = $version_dir . $file;
            $conn = readAllFile($filePath);
            $data = json_decode($conn, true);
            //set data
            array_push($version_array, ["time" => $file_time, "version" => $file_version, "data" => $data]);
        }
        closedir($dh);
        //sort
        function sort_by_time($a, $b)
        {
            if ($a["time"] == $b["time"]) {
                return 0;
            }
            if (strcmp($a["time"], $b["time"]) > 0) {
                return 1;
            } else {
                return -1;
        if ($fp = fopen($file_path, "a+")) {
            //read file
            $conn = fread($fp, filesize($file_path));
            return $conn;
        } else {
            die("file open fail.\n");
        }
    } else {
        die("no file exist.\n");
    }
    fclose($fp);
    return null;
}
$res_files = getAllFiles($res_dir);
for ($i = 0; $i < count($res_files); $i++) {
    $file_content = readAllFile($res_dir . "/" . $res_files[$i]);
    $now_content[substr($res_files[$i], 1)] = md5($file_content);
}
foreach ($now_content as $key => $value) {
    $file_name = $key;
    if (!array_key_exists($file_name, $version_content)) {
        $new_content[] = ["file" => $key, "md5" => $value, "operate" => "new"];
        continue;
    } else {
        if ($version_content[$key] != $value) {
            $new_content[] = ["file" => $key, "md5" => $value, "operate" => "update"];
        }
    }
}
foreach ($version_content as $key => $value) {
    $file_name = $key;