Не зависит от 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) должен взять переданный идентификатор задания, захватить запись задания и использовать любые сохраненные входные данные для запуска задания. Когда он закончил, собирая данные и помещая их в базу данных, он должен установить конечное время в таблице (которое помечает работу как выполненную), а затем сделать все, что вы хотите сделать, чтобы уведомить пользователя (отправить электронное письмо или вставить какое-то вид строки в таблице сообщений и т. д.)