/** * 使用DeferredJob服务对数据库进行备份 * 结合Cron服务,实现定时备份 * * 函数原型: addTask($tasktype,$dbtype,$stor_domain,$stor_filename,$dbname,$tbname,$callback) * https://fairydevil.com/sae-scheduled-backup-database/ */$stor_domain = “yovisun”;//Storage的存放域
$file_path = “/db_backup/“;//文件路径
$file_name = date(‘YmdHis’).”.sql.zip”;//以当前的时间日期为文件名
$stor_filename = $file_path .$file_name;//完整的文件名(含路径)
$dbname = SAE_MYSQL_DB; //数据库名$dj = new SaeDeferredJob();
$taskID = $dj->addTask(“export”, “mysql”, $stor_domain, $stor_filename, $dbname, null, null);
if($taskID===false){
var_dump($dj->errno(), $dj->errmsg());
}else{
var_dump($taskID);
}
这样就可以进行数据的导出,当然,请先创建相应的Storage,保证目录正确。接下来就是在config.yaml文件中设置Cron任务,可以根据自己的需要设计,具体语法可以参考官网的文档。我的设置如下:
handle: - passwdaccess: if(path ~ "db_backup/db_callback.php") passwd "user:passwd" cron: - description: SAE database backup url: db_backup/db_callback.php schedule: every day of month 04:00 login: user@passwd
这样,在每天凌晨的4点就会进行自动备份。
OK,完工,去Storage看看吧,所有的备份数据均在那里,是不是心里踏实了许多。
(温馨提示:目前DeferredJob每天只能执行10次)