| 
 | 
 | 
 <?php
 | 
| 
 | 
 | 
 
 | 
| 
 | 
 | 
 
 | 
| 
 | 
 | 
 include_once "../vendor/autoload.php";
 | 
| 
 | 
 | 
 
 | 
| 
 | 
 | 
 $dir = __DIR__."/mysql_back/";
 | 
| 
 | 
 | 
 if(!is_dir($dir)){
 | 
| 
 | 
 | 
     mkdir($dir,0775,true);
 | 
| 
 | 
 | 
 }
 | 
| 
 | 
 | 
 
 | 
| 
 | 
 | 
 $tables = db()->query("show tables;")->fetchAll();
 | 
| 
 | 
 | 
 
 | 
| 
 | 
 | 
 
 | 
| 
 | 
 | 
 foreach ($tables as $table){
 | 
| 
 | 
 | 
     $table = array_values($table)[0];
 | 
| 
 | 
 | 
 
 | 
| 
 | 
 | 
     $name = $dir.$table.".create.sql";
 | 
| 
 | 
 | 
     _echo("正在备份表结构 ".$table);
 | 
| 
 | 
 | 
     // 显示表结构
 | 
| 
 | 
 | 
     $c = db()->query("show create table {$table}")->fetch();
 | 
| 
 | 
 | 
 
 | 
| 
 | 
 | 
     file_put_contents($name,$c['Create Table']);
 | 
| 
 | 
 | 
 
 | 
| 
 | 
 | 
     if(in_array($table,['lists_auto','lists','bodies','bodies_back','lists_hot'])){
 | 
| 
 | 
 | 
         continue;
 | 
| 
 | 
 | 
     }
 | 
| 
 | 
 | 
 
 | 
| 
 | 
 | 
     $datafile = $dir.$table.'.'.date('Ymd').".data.json";
 | 
| 
 | 
 | 
     $p = 0;
 | 
| 
 | 
 | 
     $limit = 1000;
 | 
| 
 | 
 | 
     while (1){
 | 
| 
 | 
 | 
         echo "当前备份 $p 页\r";
 | 
| 
 | 
 | 
         $lists = db()->all("select * from `{$table}` limit {$limit} offset ".($p*$limit));
 | 
| 
 | 
 | 
         if($lists){
 | 
| 
 | 
 | 
             foreach ($lists as $list)
 | 
| 
 | 
 | 
                 file_put_contents($datafile,json_encode($list,true),FILE_APPEND);
 | 
| 
 | 
 | 
         }else{
 | 
| 
 | 
 | 
             break;
 | 
| 
 | 
 | 
         }
 | 
| 
 | 
 | 
         $p++;
 | 
| 
 | 
 | 
 
 | 
| 
 | 
 | 
     }
 | 
| 
 | 
 | 
 
 | 
| 
 | 
 | 
     echo "\n";
 | 
| 
 | 
 | 
 
 | 
| 
 | 
 | 
 }
 | 
| 
 | 
 | 
 
 | 
| 
 | 
 | 
  | 
...
 | 
...
 | 
 |