如何在命令中控制繁重的进程

How to control a heavy process in a command

我需要发送成百上千封带附件或不带附件的电子邮件。为此,我想使用一个 ContainerAwareCommand,我可以从 cron 启动它并使用相同的控制台对其进行监视,或者我在每次迭代中将某些值保存在 bd 中。

有什么方法可以停止或暂停命令吗?我可以有更多的控制权或互动吗?

有没有更好的方法来做或监控它?

如果你想监控/加速它也许你可以考虑使用队列/消息系统。

这意味着首先您会将所有电子邮件输入队列,然后 consumers/handlers 处理它们。通过这种方式,您可以按队列大小监控进度并在必要时停止/恢复。这也将允许通过启动更多处理程序来加快进程,即使在不同的服务器上也是如此。

在 symfony 4.1 中会有新的组件信使,或者您可以使用例如 enqueue 库。