注:echo和system执行命令的时候使用不同的符号,echo使用``,system使用"",在ajax到此文件的时候,使用system要略好,
<?php
header("Content-type:text/html;charset=utf8");// $dumpFileName目录要有可写权限
//数据库信息
$DbHost ='localhost';
$DbUser ='root';
$DbPwd ='root';
$DbName ='wys';
$fileName = $DbName.'_MySQL_data_backup_'.date('YmdHis').'.sql';//保存的文件名
$dumpFileName= "C:/phpStudy/WWW/excel/data/$fileName";//保存的文件名+路径
//if (file_exists($dumpFileName)) {//判断文件是否生成,可以不使用了
// echo "OK";
//} else {
// echo "NULL";
//}
//exit;
//header必须使用保证编码,文件夹正确
header("Content-Disposition: attachment; filename=" . $fileName);
header("Content-type: application/octet-stream");
header("Pragma:no-cache");
header("Expires:0");
//下面执行的是命令行,两种都可以执行,在使用ajax的时候,用system执行略好,并且所有路径使用绝对路径
//echo `C:/phpStudy/MySQL/bin/mysqldump -h $DbHost -u$DbUser -p$DbPwd $DbName >$dumpFileName`;//此命令行也可执行不干扰AJAX结果,但是要判断文件是否存在来确定成功失败
system("C:/phpStudy/MySQL/bin/mysqldump -h $DbHost -u$DbUser -p$DbPwd $DbName >$dumpFileName",$res);//这个命令必须用""不能和上面一样用``,直接给$res赋值返回数值即可
//命令所有路径必须使用绝对路径
$hd = fopen($dumpFileName,'rb');//打开文件写入
//echo fread($hd, filesize($dumpFileName));//文件大小
fclose($hd);//关闭写入通道
echo $res;//输出命令结果
?>