php实现备份数据库
作者:程序员11 时间:2021-04-19 人气:598 QQ交流群\邮箱:1003265987@qq.com
php实现备份数据库 exec、system,备份成本地数据库文件
要展示的内容
//php实现备份数据库----------system
public function dataBackup(){
$doc_root=$_SERVER['DOCUMENT_ROOT'];
$file_path_name=$doc_root.'/sqlbackup'; //保存到的路径
$name='backup_'.date('YmdHis').".sql";
if(!file_exists($file_path_name)){mkdir($file_path_name,0777);}
$mysqldump_url='G:phpstudyPHPTutorialMySQLinmysqldump.exe';//mysqldump.exe的绝对路径,安装mysql自带的有,可以搜索一下路径
$host='127.0.0.1';//数据库所在的服务器地址
$User='root';//数据库用户名
$Password='root';//数据库密码
$databaseName='kuer';//数据库名
$process=$mysqldump_url." -h".$host." -u".$User." -p".$Password." ".$databaseName." >".$file_path_name."/".$name;
$er=system($process);//system()执行外部程序,并且显示输出
if($er!==false){
echo json_encode('success!');
}else{
echo json_encode('error!');
}
}
//php实现备份数据库----------exec
public function bak($parameter){
$method = new Method();
$model = new dbModel();
$model->bak();
$ROOT = ROOT;
$date = date('Y_m_d__H_i_s');
$year = $_POST['year'];
$quarter = $_POST['quarter'];
$mysqldump = sys_mysqldump;
$DB_HOST = DB_HOST;
$DB_USER = DB_USER;
$DB_PASSWORD = DB_PASSWORD;
$DB_NAME = "aa_{$year}_{$quarter}";
$DB_NAME_PUBLIC = "public";
$method->_mkdir('/db');
$year_def = $GLOBALS['CACHE_SYSTEM']['joinYear'];
$quarter_def = $GLOBALS['CACHE_SYSTEM']['joinQuarter'];
$dir = "/db/{$year_def}_{$quarter_def}";
$method->_mkdir($dir);
$cmd = "{$mysqldump} -h{$DB_HOST} -u{$DB_USER} -p{$DB_PASSWORD} {$DB_NAME} > {$ROOT}{$dir}/{$date}.{$DB_NAME}.sql";
exec($cmd,$output,$status);
$cmd_public = "{$mysqldump} -h{$DB_HOST} -u{$DB_USER} -p{$DB_PASSWORD} {$DB_NAME_PUBLIC} > {$ROOT}{$dir}/{$date}.{$DB_NAME_PUBLIC}.sql";
exec($cmd_public,$output,$status);
//写入备份日志
$value_old = $method->getCache("{$dir}/db_bak_log.ini");
$u_id = $method->getSession('u_id');
$date_array = explode('__',$date);
$time = implode('-',explode('_',$date_array[0])).' '.implode(':',explode('_',$date_array[1]));
$value_old[] = ["{$date}.{$DB_NAME}.sql","{$date}.{$DB_NAME_PUBLIC}.sql",$year_def,$quarter_def,$u_id,$time];
$method->setCache("{$dir}/db_bak_log.ini", $value_old);
if(count($value_old)>3){
$first_item = array_shift($value_old);
unlink("{$ROOT}{$dir}/{$first_item[0]}");
unlink("{$ROOT}{$dir}/{$first_item[1]}");
$method->setCache("{$dir}/db_bak_log.ini", $value_old);
}
/*echo $ret_public; #默认只返回第一行结果
echo "
";
echo "****************************************************";
echo "
";
echo "Status: ",$status; #打印出执行状态码
echo "
";
echo "****************************************************";
$length=count($output); #数组的长度
for($i=0;$i
温馨提示:
欢迎阅读本文章,觉得有用就多来支持一下,没有能帮到您,还有很多文章,希望有一天能帮到您。
- 上一篇:phpstrom一些基本设置
- 下一篇:PHP (GET/POST)请求
