Laravelでデータベースの.sqlファイルをステージングサーバーからダウンロードして運用サーバー(要件)に貼り付けるコマンドを作成しました。私は本番サーバーへのSSHアクセスを持っていないので、そのコマンドのためのルートを作成し、URLから実行します。ここに私のコードです。Laravelデータベーステーブルをバックグラウンドでダウンロード
ルート
Route::get('console/import_all',
function() {
Artisan::call('importDatabase:staging', ['tables' => 'all']);
});
コマンド機能
private function downloadFile($url, $path)
{
sleep(5);
return copy($url, $path);
}
は今、約30+のファイルがあり、そのうちのいくつかは、サイズが10メガバイト以上のもの。私のコマンドはSSH(管理者)とURLからうまく機能します。しかし、問題はURLからコマンドを打つと、すべてのダウンロードが完了するまでページがロードされ続けることです。 これをバックグラウンドから実行する方法はありますか?管理者パネルの管理者がボタンを押すと、すべてのファイルが終了し、プロセスが開始されたことを通知するメッセージを表示することができ、完了したら通知が表示されます。
おかげ@cwang、I'LLを仕事を派遣生成されたクラスで職人コマンドを呼び出します私が何か問題に直面したらあなたに知らせてください。 –
面倒なエラー「Class 'DownloadFile' not found」このようなことによってクラスを呼び出す必要はありますか? $ DownloadFile = App \ Jobs \ DownloadFile :: handle(); $ DownloadFile :: dispatch(); –
ディスパッチ(new \ App \ Jobs \ DownloadFile())でうまく動作します。そのジョブが正常に実行されたかどうかはどのようにわかりますか? –