数据库操作日志并通过日志进行不同数据库的备份

来源:互联网 发布:开放教育与网络教育 编辑:程序博客网 时间:2024/06/13 07:38
        $_POST['_id'] = $s['$id'];        //添加返回的id数
        $_POST['translate'] = 'insert';    //代表添加操作
        $str = json_encode($_POST)."\n";//json数据
        $dir = '../ceshi';                //操作日志所在路径
        $dir_arr = scandir($dir);        //读取目录
        $k = count($dir_arr)-1;            //最后一个文件
        $varr = 5;                        //每个日志文件存储条数
        if($k>1){                        //日志路径有文件
            $varr = count(file($dir.'/'.$dir_arr[$k]));    //读取最后一个文件判断条数
        }
        if($varr==5||$k<=1){            //如果等于设定条数或者没有文件存在创建新文件并写入内容
            file_put_contents("../ceshi/".time().".txt",$str);
        }else{                            //有文件并且小于设定条数追加进文件
            file_put_contents($dir.'/'.$dir_arr[$k],$str,FILE_APPEND);

        }

//------其他操作雷同

    $dir = '../ceshi';  //日志路径---与你所设定的日志路径相同
    $dir_arr = scandir($dir); //读取目录
    $len = count($dir_arr)-1; //留最后一个文件
    for($i=2;$i<$len;$i++){
        $marr = file($dir.'/'.$dir_arr[$i]);  //读取文件
        //unlink($dir.'/'.$dir_arr[$i]);  //删除文件
        $narr['insert'] = array();
        $narr['update'] = array();
        $narr['remove'] = array();
        foreach($marr as $v){
            $s = json_decode($v,true);
            $k = $s['translate'];    //操作类型
            $t = $s['table'];        //操作的哪一个表
            unset($s['translate']);
            unset($s['table']);
            $narr[$k][$t][] = $s;  //重新赋值
        }
        //添加操作
        foreach($narr['insert'] as $key => $val){
            echo $key.'-----';
            $str = array();  //$key 操作的表名
            foreach($val as $k => $v){ //拼接字符串数据
                foreach($v as $kk => $vv){
                    $vi[$kk] = "'".$vv."'";
                }
                $str[] = '('.implode(',',$vi).')';
            }
            echo implode(',',$str).'<br />'; //最终拼接
            //--------执行sql语句复制---------//
        }
        //修改操作
        foreach($narr['update'] as $key => $val){
            echo $key.'-----';
            foreach($val as $v){
                echo $v['upid'].'<br />';
                unset($v['upid']);
                var_dump($v);
            }
            //--------执行sql语句复制---------//
        }
        //删除操作
        foreach($narr['remove'] as $key => $val){
            echo $key.'-----';
            $id = array();
            foreach($val as $v){
                $id[] = $v['id'];
            }
            if(count($id)==1){
                echo $id['0'];  //一个id等于号删除
            }else{
                echo '('.implode(',',$id).')<br />';
            }
            //--------执行sql语句复制---------//
        }
    }

0 0