CRMEB二次开发多商户自动备份数据库功能
程序员文章站
2022-04-25 15:19:39
...
一.首先在项目目录中找到crmeb_merchant/crmeb/listens
目录:
二.在定时任务的文件(AutoDatabaseBackupListen.php)中编写如下代码:
public function handle($event): void
{
//时间为毫秒 如 1000 表示 1 秒
Timer::tick(1000 * 60 * 60, function () {
//获取时间
$_H = date('H',time());
if($_H == 2 ){ //如果当前时间是 2 点 就执行
$config = array(
'level' => 5, //数据库备份卷大小
'compress' => 1,//数据库备份文件是否启用压缩 0不压缩 1 压缩
);
$service = new MysqlBackupService($config); //数据库操作的 service
try {
$data = $service->dataList(); //获取数据库的所有表
foreach($data as $item){ //循环执行
$res = $service->backup($item['name'],0);
if ($res == false && $res != 0) {
$data .= $item['name'] . '|';
}
}
} catch (\Exception $e) {
//如果执行失败则存入日志
Log::info('自动删除导出文件失败:'.$e->getMessage());
}
}
});
}
到这里定时任务需要做的功能就好了
三. 找到crmeb_merchant/app/event.php文件插入代码 \crmeb\listens\AutoDatabaseBackupListen::class,
:
四、在项目根目录下找到.env文件,插入INSTALLED = true:
五.最后重启swoole服务就ok了, php think swoole restart
.
六.然后每天凌晨2点就会自动备份数据库.可以在crmeb_merchant/backup/文件中查看备份的文件,也可以在后台数据库备份中查看