Laravel在后台下载数据库表



我已经在laravel中创建了命令,从staging服务器下载(复制)数据库的.sql文件并将其粘贴到生产服务器上(需求)。我没有SSH访问生产服务器的访问,因此为该命令创建了路由并从URL执行它。这是我的代码。

路由

Route::get('console/import_all',
    function () {
    Artisan::call('importDatabase:staging', ['tables' => 'all']);
});

命令函数

private function downloadFile($url, $path)
{
    sleep(5);
    return copy($url, $path);
}

现在大约有30多个文件,其中一些文件的大小超过10MB。我的命令从SSH(通过Admin)和URL工作正常。但是问题是当我从URL命令命令时,页面一直在加载直到所有下载完成。是否有任何方法可以从后台执行此操作?过程已经开始,您将通知一旦完成。

laravel为您的用例提供队列。

https://laravel.com/docs/5.5/queues

运行php artisan make:job DownloadFile

然后在生成类中调用工匠命令

/**
 * Execute the job.
 *
 * @return void
 */
public function handle()
{
    Artisan::call('importDatabase:staging', ['tables' => 'all']);
}

然后在您的路线上派遣作业

Route::get('console/import_all', function () {
    AppJobsDownloadFile::dispatch();
});

最新更新