注: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;//输出命令结果 ?>