Please Login First!"; exit(1); } ?>




$DB_HOST, 'port' => 3306, 'user' => $DB_USER, 'password' => $DB_PASS, 'database' => $DB_NAME, 'charset' => 'utf-8', 'target' => $target ); $bak = new DatabaseTool($config); $bak->backup(); function addDirToZip($path, $zip) { global $OJ_DATA; if ($path=="data/0") return; $handler = opendir($path); //打开当前文件夹由$path指定。 /* 循环的读取文件夹下的所有文件和文件夹 其中$filename = readdir($handler)是每次循环的时候将读取的文件名赋值给$filename, 为了不陷于死循环,所以还要让$filename !== false。 一定要用!==,因为如果某个文件名如果叫'0',或者某些被系统认为是代表false,用!=就会停止循环 */ while (($filename = readdir($handler)) !== false) { if ($filename != "." && $filename != "..") {//文件夹文件名字为'.'和‘..’,不要对他们进行操作 if (is_dir($path . "/" . $filename)) {// 如果读取的某个对象是文件夹,则递归 addDirToZip($path . "/" . $filename, $zip); } else { //将文件加入zip对象 $zip->addFile($path . "/" . $filename); } } } @closedir($path); } $zip = new ZipArchive(); $ztar=dirname($target)."/backup_".(date('Y-m-d H:i:s')).".zip";; //echo $ztar; if ($zip->open($ztar, ZipArchive::CREATE) === TRUE) { chdir( dirname($OJ_DATA) ); if(is_dir("data")) addDirToZip("data", $zip); //测试数据 chdir(realpath(dirname(dirname(__FILE__)))); if($OJ_SaaS_ENABLE && $DOMAIN!=$domain){ if(is_dir("upload/$domain")) addDirToZip("upload/$domain", $zip); //子域题目图片 }else{ if(is_dir("upload/")) addDirToZip("upload", $zip); //题目图片 } chdir($OJ_DATA."/0"); if(file_exists($db_file)){ $zip->addFile($db_file); } $zip->close(); //关闭处理的zip文件 } ?>