我将它安装到我的laravel项目中:
backup-manager/laravel
league/flysystem-dropbox
因为我可以将我的数据库备份到dropbox,但是可以通过终端与php artisan完成,如何在我的设置页面上创建一个按钮,当我点击它时,它可以调用这个备份功能吗?
有没有可以调用的功能来触发这个备份功能?或者它可以由php artisan完成?
我尝试运行
Artisan::call('db:backup');
并显示错误
Maximum execution time of 60 seconds exceeded
当我从终端运行时,它工作正常
如何从我的控制器运行它?
php artisan db:backup --database=pgsql --destination=dropbox --destinationPath=`date +\%d-%m-%Y %H:%i:%s`-digitization.sql --compression=null
请某人帮帮我..
这是我用ajax的脚本
<script type="text/javascript">
$("#backup").click(function(){
var url = $(this).data("url");
$.ajax({
url: url
}).done(function() {
alert("asdsad");
});
});
</script>
答案 0 :(得分:1)
1)在刀片中创建一个按钮:
<system.web>
<compilation debug="false" targetFramework="4.0">
<assemblies>
<add assembly="System.Data.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
</assemblies>
</compilation>
2)在javascript部分:
<button onclick="backup()"></button>
3)在routes.php中:
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");
}
});
}
4)在控制器(SystemController.php)中:
Route::post('/admin/system/db-backup', [
'as' => 'system.dbBackup',
'uses' => 'Website\SystemController@postDbBackUp'
]);
答案 1 :(得分:0)
试试这个,
您可以从code itself调用artisan命令。
之类的,
Route::get('/backupdatabase', function () {
$exitCode = Artisan::call('db:backup');
}
如果您的数据库大小太大,可能无法在浏览器中运行,因此最好与cron作业一起使用。你可以找到cron jobs setup文档here。还有一些packages。
希望它有所帮助..答案 2 :(得分:0)
您可以通过代码调用artisan命令。 http://laravel.com/docs/5.1/artisan#calling-commands-via-code
所以如果你需要运行这个
php artisan db:backup --database = pgsql --destination = dropbox --destinationPath =
date +\%d-%m-%Y %H:%i:%s
- digitization.sql --compression = null
然后你可以这样做:
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
]
);
});