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 命令之后怎么能够获取到文件并下载下来?

《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 4

我试了一下,shell_exec执行的命令是异步的,所以当你此次请求结束,备份文件可能都没有备份好。
所以建议你使用 Laravel 的任务调度来定时生成备份文件,
当你想下载文件时,只要访问备份的文件夹就可以列出所有已经备份的文件了。

6年前 评论

或者你分两步执行,AJAX请求后台生成备份文件,当生成好了把备份文件名返回,然后再去下载

6年前 评论

@施国鹏 你好 请问一下 laravel backup支持同步下载吗?

6年前 评论

@hogus2037 同步下载应该和这个包没什么关系,你可以考虑这样做,
程序运行
查看备份文件夹的文件数目
使用 shell_exec 执行命令备份文件
sleep 一秒死循环(不断的读取备份文件夹是否有文件生成)这个步骤就提示备份中就行了
多出一个文件之后,就调用 laravel 的下载方法吧。

6年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!