正在显示
1 个修改的文件
包含
13 行增加
和
6 行删除
| @@ -37,21 +37,28 @@ foreach ($tables as $table){ | @@ -37,21 +37,28 @@ foreach ($tables as $table){ | ||
| 37 | 37 | ||
| 38 | $p = 0; | 38 | $p = 0; | 
| 39 | $limit = 1000; | 39 | $limit = 1000; | 
| 40 | + $totalBackupCount = 0; | ||
| 40 | while (1){ | 41 | while (1){ | 
| 41 | echo "正在备份数据 当前 $p 页\r"; | 42 | echo "正在备份数据 当前 $p 页\r"; | 
| 42 | $lists = db()->all("select * from `{$table}` limit {$limit} offset ".($p*$limit)); | 43 | $lists = db()->all("select * from `{$table}` limit {$limit} offset ".($p*$limit)); | 
| 43 | if($lists){ | 44 | if($lists){ | 
| 44 | - foreach ($lists as $list) | ||
| 45 | - file_put_contents($datafile,json_encode($list,true),FILE_APPEND); | 45 | + $backupCount = 0; | 
| 46 | + foreach ($lists as $list) { | ||
| 47 | + // 每行一个独立的JSON对象,添加换行符以便恢复时正确解析 | ||
| 48 | + file_put_contents($datafile, json_encode($list, JSON_UNESCAPED_UNICODE) . "\n", FILE_APPEND | LOCK_EX); | ||
| 49 | + $backupCount++; | ||
| 50 | + $totalBackupCount++; | ||
| 51 | + } | ||
| 52 | + // 如果当前页数据少于限制数量,说明已经是最后一页 | ||
| 53 | + if ($backupCount < $limit) { | ||
| 54 | + break; | ||
| 55 | + } | ||
| 46 | }else{ | 56 | }else{ | 
| 47 | break; | 57 | break; | 
| 48 | } | 58 | } | 
| 49 | $p++; | 59 | $p++; | 
| 50 | - | ||
| 51 | } | 60 | } | 
| 52 | 61 | ||
| 53 | - echo "\n"; | 62 | + echo "表 {$table} 备份完成,共 {$totalBackupCount} 条记录\n"; | 
| 54 | 63 | ||
| 55 | } | 64 | } | 
| 56 | - | ||
| 57 | - | 
- 
请 注册 或 登录 后发表评论