Laravel backup 怎么手动备份并下载备份文件呢?
laravel backup 的自动备份非常好用
最近我这边需要一个手动备份并下载备份文件的需求,一直不知道怎么才能运行完命令之后把文件下载?
定义一个路由 操作备份命令
Route::get('db','DbexportController@export');
DbexportController控制器文件
public function export()
{
base_path = base_path();
$cmd = [
"cd $base_path",
"php artisan backup:run --only-db"
];
foreach ($cmd as $value){
shell_exec($value);
}
}
我想在artisan 命令之后怎么能够获取到文件并下载下来?
我试了一下,
shell_exec
执行的命令是异步的,所以当你此次请求结束,备份文件可能都没有备份好。所以建议你使用 Laravel 的任务调度来定时生成备份文件,
当你想下载文件时,只要访问备份的文件夹就可以列出所有已经备份的文件了。
或者你分两步执行,AJAX请求后台生成备份文件,当生成好了把备份文件名返回,然后再去下载
@施国鹏 你好 请问一下 laravel backup支持同步下载吗?
@hogus2037 同步下载应该和这个包没什么关系,你可以考虑这样做,
程序运行
查看备份文件夹的文件数目
使用 shell_exec 执行命令备份文件
sleep 一秒死循环(不断的读取备份文件夹是否有文件生成)这个步骤就提示备份中就行了
多出一个文件之后,就调用 laravel 的下载方法吧。