我想清除控制器中的緩存。我已將該命令定義爲服務並調用它。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
。
有沒有辦法在瀏覽器中返回響應並讓命令在服務器上運行並完成?我不希望客戶繼續等待它完成。
它有點ha。。它可能會工作(我不知道在Linux中的「\」目錄分隔符),但它不是乾淨的代碼 - 讓我們設想命令的名稱將改變爲'緩存:clear-now'或'console'將更改爲'ezpublish '(實際上它在'ezpublish' cms中被稱爲這種方式)並且不再起作用 –
然後可以將它們作爲上面的參數添加。儘管如此,它們很可能不會改變(雖然我們不應該依賴這個事實,但是有相當多的項目在部署腳本的某個地方使用了硬編碼的命令),並且它只能用於Symfony。 –
我改變了它,所以更多的命令可以添加到它。到目前爲止,它的工作非常出色。 –