Heim  >  Artikel  >  Backend-Entwicklung  >  Verwenden Sie PHP, um die ZIP-Datei und den Export der Backup-Datenbank zu implementieren

Verwenden Sie PHP, um die ZIP-Datei und den Export der Backup-Datenbank zu implementieren

巴扎黑
巴扎黑Original
2016-11-23 14:01:151047Durchsuche

 经常在有的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(&#39;Content-Description: File Transfer&#39;);   
    header(&#39;Content-Type: application/octet-stream&#39;);   
    header(&#39;Content-Disposition: attachment; filename=&#39;.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(&#39;Content-Description: File Transfer&#39;);   
header(&#39;Content-Type: application/octet-stream&#39;);   
header(&#39;Content-Disposition: attachment; filename=&#39;.basename($dbname . "_" .    
    date("Y-m-d_H-i-s").".sql"));   
flush();   
echo $dump;   
exit();]]>   
?>


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:PHP durchquert ObjekteNächster Artikel:PHP durchquert Objekte