Home  >  Article  >  php教程  >  用php实现备份数据库ZIP及导出

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

WBOY
WBOYOriginal
2016-06-13 10:48:391085browse

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

一)
  
Java代码    
1.  2.     
3. $username = "root";    
4. $password = "";    
5. $hostname = "localhost";    
6. $dbname   = "test";   
7.     
8.  
9. $dumpfname = $dbname . "_" . date("Y-m-d_H-i-s").".sql";   
10. $command = "C:\\xampp\\mysql\\bin\\mysqldump --add-drop-table --host=$hostname   
11.     --user=$username ";   
12. if ($password)    
13.         $command.= "--password=". $password ." ";    
14. $command.= $dbname;   
15. $command.= " > " . $dumpfname;   
16. system($command);   
17.     
18. // zip 数据文件  
19. $zipfname = $dbname . "_" . date("Y-m-d_H-i-s").".zip";   
20. $zip = new ZipArchive();   
21. if($zip->open($zipfname,ZIPARCHIVE::CREATE))    
22. {   
23.    $zip->addFile($dumpfname,$dumpfname);   
24.    $zip->close();   
25. }   
26.     
27. // read zip file and send it to standard output   
28. if (file_exists($zipfname)) {   
29.     header('Content-Description: File Transfer');   
30.     header('Content-Type: application/octet-stream');   
31.     header('Content-Disposition: attachment; filename='.basename($zipfname));   
32.     flush();   
33.     readfile($zipfname);   
34.     exit;   
35. }   
36. ?>  


方法2 文件夹没相关权限
Java代码    
1.  2. ob_start();   
3.     
4. $username = "root";    
5. $password = "";    
6. $hostname = "localhost";    
7. $dbname   = "test";   
8.     
9. $command = "C:\\xampp\\mysql\\bin\\mysqldump --add-drop-table --host=$hostname   
10.     --user=$username ";   
11. if ($password)    
12.         $command.= "--password=". $password ." ";    
13. $command.= $dbname;   
14. system($command);   
15.     
16. $dump = ob_get_contents();    
17. ob_end_clean();   
18.     
19.  
20. //不ZIP了  
21. header('Content-Description: File Transfer');   
22. header('Content-Type: application/octet-stream');   
23. header('Content-Disposition: attachment; filename='.basename($dbname . "_" .    
24.     date("Y-m-d_H-i-s").".sql"));   
25. flush();   
26. echo $dump;   
27. exit();]]>   
28. ?> 

 

摘自 jackyrong
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn