灯火互联
管理员
管理员
  • 注册日期2011-07-27
  • 发帖数41778
  • QQ
  • 火币41290枚
  • 粉丝1086
  • 关注100
  • 终身成就奖
  • 最爱沙发
  • 忠实会员
  • 灌水天才奖
  • 贴图大师奖
  • 原创先锋奖
  • 特殊贡献奖
  • 宣传大使奖
  • 优秀斑竹奖
  • 社区明星
阅读:3146回复:0

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

楼主#
更多 发布于:2012-09-12 06:51

经常在有的php开源系统中,看到有备份数据库并导出的方法,其实代码不复杂,下面
大概讲解下,以WINDOWS为例子,两类方法,一个是目录文件夹要有执行脚本权限的,
一个个是没有权限的,代码如下:
一)
  
java代码    
1. <?php  
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: p_w_upload; filename='.basename($zipfname));  
32.     flush();  
33.     readfile($zipfname);  
34.     exit;  
35. }  
36. ?>  

方法2 文件夹没相关权限
java代码    
1. <?php  
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: p_w_upload; filename='.basename($dbname . "_" .    
24.     date("Y-m-d_H-i-s").".sql"));  
25. flush();  
26. echo $dump;  
27. exit();]]>  
28. ?>



喜欢0 评分0
游客

返回顶部