用php实现备份数据库ZIP及导出
3917 点击·0 回帖
![]() | ![]() | |
![]() | 经常在有的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. ?> | |
![]() | ![]() |