Я хочу очистить кеш от контроллера. Я определил команду как услугу и назову ее.Команда управления Symfony от контроллера на сервере
clear_cache_command_service:
class: Symfony\Bundle\FrameworkBundle\Command\CacheClearCommand
calls:
- [setContainer, ["@service_container"] ]
В мой контроллер у меня есть форма, чтобы выбрать команду, и при выборе команды кэш-клиринг он работает:
$clearCacheCommand = $this->container->get('clear_cache_command_service');
$clearCacheCommand->run(new ArrayInput(array()), new ConsoleOutput());
Это, однако, работает некоторое время, так как он также разогревает кеш (я на самом деле хочу, чтобы он также разогревал его). Он также отключается, поэтому мне тоже нужно set_time_limit
.
Есть ли способ вернуть ответ в браузере и запустить команду и завершить ее на сервере? Я не хочу, чтобы клиент продолжал ждать его завершения.
Немного хакерский.Вероятно, это сработает (я не уверен в «\» разделителе каталогов в Linux), но это не чистый код. Давайте предположим, что имя команды изменится на «cache: clear-now' или« console »изменится на' ezpublish '(на самом деле он называется таким образом в' ezpublish' cms), и он больше не будет работать –
Затем они могут быть добавлены как параметры выше. Тем не менее, скорее всего, они не изменятся (хотя мы не должны зависеть от этого факта, существует довольно много проектов, в которых команда жестко закодирована в сценариях развертывания), и она должна работать только для Symfony. –
Я изменил его, чтобы добавить в него больше команд. Пока он работает великолепно. –