Symfony2 – запуск команды symfony2

Моя цель состоит в том, чтобы запустить несколько временных функций в фоновом режиме, чтобы пользователь не дождался ответа сервера.

У меня есть проект Symfony, где я запускаю асинхронный процесс с контроллера. Этот процесс запустит команду Symfony, которая вызовет другой контроллер.

Проблема в том, что я вызываю процесс с помощью start()

 $process = new Process('/usr/bin/php '.$this->get('kernel')->getRootDir().'/console scopusftpupload ' . escapeshellcmd($params)); $process->start(); 

Тогда ничего не происходит с процессом, но перенаправление и некоторый другой код, который у меня есть, работает позже.

Однако, если я это сделаю

 $process->run(); 

Затем процесс работает отлично, но мне нужно подождать, пока процедура не будет завершена, чтобы отобразить представление.

Любая идея, что я делаю неправильно?

    Я нашел обходной путь этой проблемы, используя exec instaed для создания нового объекта Process.

     exec('/usr/bin/php '.$this->get('kernel')->getRootDir().'/console scopusftpupload ' . escapeshellcmd($params) . ' > /dev/null 2>&1 &'); 

    Мы выполняем нашу асинхронную обработку с сервера задания Gearman – http://gearman.org/

    Есть пакеты, которые упрощают использование Gearman в проекте Symfony. Мы используем mmoreram / GearmanBundle – https://github.com/mmoreram/GearmanBundle . В принципе, вы создаете своего работника, который может быть сервисом, и назовите его для выполнения трудоемких задач. Мы используем его для импорта данных, которые занимают много времени.