首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用按钮将Laravel数据库备份到Dropbox

使用按钮将Laravel数据库备份到Dropbox
EN

Stack Overflow用户
提问于 2015-11-19 14:27:29
回答 3查看 1.6K关注 0票数 2

我将这个安装到我的laravel项目中:

代码语言:javascript
复制
backup-manager/laravel
league/flysystem-dropbox

因为我可以备份我的数据库到dropbox,但它可以用php artisan终端来完成,如何在我的设置页面上做一个按钮,当我点击时,它可以调用这个备份功能?

有没有可以调用的函数来触发这个备份函数?或者它只是可以由php artisan来完成?

我试着奔跑

代码语言:javascript
复制
Artisan::call('db:backup');

并显示错误

代码语言:javascript
复制
Maximum execution time of 60 seconds exceeded

当我从终端运行时,它工作正常

如何从我的控制器运行它?

代码语言:javascript
复制
php artisan db:backup --database=pgsql --destination=dropbox --destinationPath=`date +\%d-%m-%Y %H:%i:%s`-digitization.sql --compression=null

请谁来帮帮我..

这是我使用ajax编写的脚本

代码语言:javascript
复制
<script type="text/javascript">
    $("#backup").click(function(){
        var url = $(this).data("url");

        $.ajax({
            url: url
        }).done(function() {
            alert("asdsad");
        });
    });
</script>
EN

回答 3

Stack Overflow用户

发布于 2015-11-19 14:34:03

试试这个,

您可以从code itself调用artisan命令。

像这样,

代码语言:javascript
复制
Route::get('/backupdatabase', function () {
    $exitCode = Artisan::call('db:backup');
}

如果你的数据库太大,在浏览器上可能无法工作,所以最好与cron作业一起使用。您可以找到cron作业设置文档here。还有一些packages

希望能有所帮助..。

票数 0
EN

Stack Overflow用户

发布于 2015-11-19 14:36:06

您可以通过代码调用artisan命令。http://laravel.com/docs/5.1/artisan#calling-commands-via-code

所以如果你需要运行这个

压缩php artisan数据库:backup --database=pgsql --destination=dropbox --destinationPath=date +\%d-%m-%Y %H:%i:%s-digitization.sql --

=空

然后你可以这样做:

代码语言:javascript
复制
Route::get('/db_backup', function () {
    var $now = Carbon\Carbon::now();
    $exitCode = Artisan::call('db:backup',
        [
            '--database' => 'pgsql',
            '--destination' => 'dropbox',
            '--destinationPath' => $now->toDateTimeString().'-digitization.sql',
            '--compression' => null
        ]
    );
});
票数 0
EN

Stack Overflow用户

发布于 2016-06-19 00:44:05

1)在刀片式服务器中创建按钮:

代码语言:javascript
复制
 <button onclick="backup()"></button>

2)在javascript部分:

代码语言:javascript
复制
var token = $('input[name = _token]').val();
    function backup() {
        $.ajax({
            type: "POST",
            url: '/admin/system/db-backup',
            data: {
                _token: token,
            },
            success: function (result) {
              alert("ok")

            },
            error: function (errors) {

               alert("error");
            }
        });
    }

3)在routes.php中:

代码语言:javascript
复制
  Route::post('/admin/system/db-backup', [
        'as'   => 'system.dbBackup',
        'uses' => 'Website\SystemController@postDbBackUp'
    ]);

4)在控制器(SystemController.php)中:

代码语言:javascript
复制
public function postDbBackUp () {
   $now =  Carbon::now()->format("Y-m-d-H-m-i").'-backup.sql';
    try {
        Artisan::call('db:backup',
            [
                '--database' => 'mysql',
                '--destination' => 'local',
                '--destinationPath' =>$now,
                '--compression' => 'gzip'
            ]
        );
    }
    catch(\Exception $e) {
        return Response::json([
            'success' => false,
            'errors' => ""
        ], 400);
    }
    return Response::json([
        'success' => true,
        'message' => 'success'
    ]);

}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33796696

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档