php实现备份数据库
作者:程序员11 时间:2021-04-19 人气:550 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)请求