用php实现备份数据库ZIP及导出

来源:互联网 发布:北京信索咨询集团知乎 编辑:程序博客网 时间:2024/05/22 14:43

经常在有的PHP开源系统中,看到有备份数据库并导出的方法,其实代码不复杂,下面
大概讲解下,以WINDOWS为例子,两类方法,一个是目录文件夹要有执行脚本权限的,
一个个是没有权限的,代码如下:

一)
  

 <?php        $username = "root";     $password = "";     $hostname = "localhost";     $dbname   = "test";           $dumpfname = $dbname . "_" . date("Y-m-d_H-i-s").".sql";    $command = "C:\\xampp\\mysql\\bin\\mysqldump --add-drop-table --host=$hostname        --user=$username ";    if ($password)             $command.= "--password=". $password ." ";     $command.= $dbname;    $command.= " > " . $dumpfname;    system($command);         // zip 数据文件   $zipfname = $dbname . "_" . date("Y-m-d_H-i-s").".zip";    $zip = new ZipArchive();    if($zip->open($zipfname,ZIPARCHIVE::CREATE))     {       $zip->addFile($dumpfname,$dumpfname);       $zip->close();    }         // read zip file and send it to standard output    if (file_exists($zipfname)) {        header('Content-Description: File Transfer');        header('Content-Type: application/octet-stream');        header('Content-Disposition: attachment; filename='.basename($zipfname));        flush();        readfile($zipfname);        exit;    }    ?>  
方法2 文件夹没相关权限

<?php    ob_start();         $username = "root";     $password = "";     $hostname = "localhost";     $dbname   = "test";         $command = "C:\\xampp\\mysql\\bin\\mysqldump --add-drop-table --host=$hostname        --user=$username ";    if ($password)             $command.= "--password=". $password ." ";     $command.= $dbname;    system($command);         $dump = ob_get_contents();     ob_end_clean();           //不ZIP了   header('Content-Description: File Transfer');    header('Content-Type: application/octet-stream');    header('Content-Disposition: attachment; filename='.basename($dbname . "_" .         date("Y-m-d_H-i-s").".sql"));    flush();    echo $dump;    exit();]]>    ?> 


原创粉丝点击