// 写入文件
public function writeFileByBackUpData($fileName, $data, $method="rb+", $iflock=1, $check=1, $chmod=1){
$check && @strpos($fileName, '..')!==false && exit('Forbidden');
@touch($fileName);
$handle = @fopen($fileName, $method);
if($iflock) {
@flock($handle,LOCK_EX);
}
$fw = @fwrite($handle,$data);
if($method == "rb+") ftruncate($handle, strlen($data));
fclose($handle);
$chmod && @chmod($fileName,0777);
return $fw;
}
/**
* path: 生成压缩包的路径
* fileName : 要压缩的文件名 通常和path 同一目录
*/
public function createZipByBackUpFile($path) {
$db_base_files = $this->getFileByBackUpDir($path);
if(!empty($db_base_files)) {
$zip = new ZipArchive;
if($zip->open($path.$this->dbName.date('Ymd').'.zip', ZipArchive::CREATE | ZIPARCHIVE::OVERWRITE) !== true)
die ("cannot open".$this->dbName.date('Ymd')."zip for writing.");
foreach ($db_base_files as $key => $value) {
if(is_file($value)) {
$file_name = basename($value);
$info[] = $zip->addFile($value, $file_name);// 避免压缩包里有文件的路径
}
}
$zip->close();
if(file_exists($path.$this->dbName.date('Ymd').'.zip'))
foreach ($db_base_files as $val) {
unlink($val);
}
if(count(array_filter($info)) > 0) return true;
}
return false;
}