PHP能够一键导出MYSQL备份文件,并压缩存放,尽管phpMyAdmin有这功能,不过若你本身开发网站或者是为别人写CMS,你不该该要求别人用你程序的时候再去另外用phpMyAdmin备份MYSQL,这应该是你CMS中的一个功能,那么PHP如何实现一键备份MYSQL数据,这里是指把MYSQL内容所有导出成SQL文件,而后压缩SQL,介绍两种方法以下:php
第一种:mysql
<?php $username = "root";//你的MYSQL用户名 $password = "";//密码 $hostname = "localhost";//MYSQL服务器地址 $dbname = "cars";//数据库名 $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(); } 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; } ?>
上述代码可保存成一个PHP文件,如mysqlbak.php,注意,此文件必须有写权限。为了使用方便,你能够在后台给此文件一个连接,须要导出MYSQL时,你只需点击一下就执行备份导出操做。sql
第二种方法:不须要写权限,但不压缩SQL文件,代码以下:数据库
<?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(); 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(); ?>
两种方法你能够选用一种,一样可将第二种方法保存成mysqlbak.php文件,在后台给个连接,用着方便。服务器