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 개 이상의 파일이 있고 그들 중 일부는 10MB의 이상이다. 내 명령은 SSH (admin에서)와 URL에서 잘 작동합니다. 그러나 문제는 URL에서 명령을 내리면 모든 다운로드가 완료 될 때까지 페이지가 계속로드됩니다. 백그라운드에서 실행할 수 있습니까? 관리자가 admin 패널에서 버튼을 누르면 모든 파일 처리가 완료 될 때까지 기다리지 말고 프로세스가 시작되었다는 메시지를 표시 할 수 있으며 완료되면 알림을 보냅니다.
감사 @cwang을 작업을 파견 생성 된 클래스의 장인 명령을 호출, 나는거야 내가 어떤 문제에 직면하면 알려 줘라. –
Facing error "Class 'DownloadFile'not found"이런 식으로 수업을해야합니까? $ DownloadFile = App \ Jobs \ DownloadFile :: handle(); $ DownloadFile :: dispatch(); –
발송 (new \ App \ Jobs \ DownloadFile())을 사용하여 정상적으로 작업하십시오. 하지만 그 작업이 성공적으로 실행되었는지 여부를 어떻게 알 수 있습니까? –