관리자의 긴 스크립트, Symfony의 작업?
문제
관리자 패널에서 관리자가 작업을 선택하면 API에서 데이터를로드하여 DB에 저장합니다. 그가 가져 오는 것에 따라 2 초에서 3 분이 걸릴 수 있습니다.
Symfony에서 스레드처럼 만들기 위해 어떻게해야합니까? 그리고 그것이 끝났을 때 그에게 결과를 확인하라고 말합니까?
작업 이이 문제에 대한 답변입니까?
감사해요!
해결책
Symfony 특정은 아니지만 배경 프로세스를 시작하고 싶을 것입니다.
나는 Symfony의 명령 줄 스크립트를위한 툴링에 익숙하지 않지만 사용할 수있는 것들이 있다고 생각합니다.
그런 다음 컨트롤러에서 대략 같은 것을 원합니다 (Unixy 호스트에 있다고 가정) :
public function executeYourBackgroundTask(){
// first, you might want to create some kind of entry in a table to keep track of jobs.
// Imagine you've got a table to keep track of this stuff
$job = new Backgroundjob();
$job->user_id = $this->getUser()->getId();
$job->starttime = time();
$job->someArgument = $someArgument; //anything the job script needs for input.
$job->save();
$jobId = $job->getId();
//start a job in the background.
exec('php /path/to/your/background/script.php ' . $jobId .' &');
//your view should just tell the user "Your job is being processed, you'll be notified when it is done"
}
배경 프로세스 (/path/to/your/background/script.php)는 통과 된 Jobid를 취하고 작업 기록을 잡고 저장된 입력을 사용하여 작업을 실행해야합니다. 데이터를 잡고 데이터베이스에 채워 넣을 때, 작업을 완료 한 것으로 표시 한 다음 사용자에게 알리기 위해 원하는 모든 것을 수행해야합니다 (이메일 보내거나 일부 삽입 메시지 테이블 등에 행한 행)
제휴하지 않습니다 StackOverflow