【发布时间】:2015-09-03 13:19:06
【问题描述】:
我正在开发一个 API 项目,该项目需要在响应返回给客户端之后(或之前取决于实现)发送电子邮件并存储统计信息。对于这两种情况,我都在考虑 Symfony 的 EventDispatcher 组件(我没有使用 Symfony 作为框架),因此每个控制器操作都会调度一个事件以将电子邮件添加到队列或将数据插入到统计数据库表中。
所以事情看起来像这样
Controller
=> Send Response to client
=> Dispatch Event email => EmailEventListener => Mail queue
=> Dispatch Event stats => StatsEventLister => Database
我正在考虑这个,因为我希望这个内部操作尽可能地异步。这是适合这种情况的解决方案吗?
编辑:正如Jovan Perovic 建议的那样,我正在添加更多信息。 API 是一个 REST API,用户通过 Web 或移动应用程序与其通信,我想记录、存储统计信息和发送通知(主要是电子邮件)而不影响 API 的性能,第一个想法是使用返回后运行的东西对客户端的响应,但我不知道是否可以使用 EventDispatcher。即使使用队列来处理统计信息或通知,我也需要一个集中的地方,所有控制器都可以发送信息以便写入日志并存储统计信息。
我希望我的目标现在更加明确。对不起。
【问题讨论】:
-
这是有道理的,但如果没有更多信息,我们无法判断这是否是正确的做法。
-
感谢 Jovan,我已在问题中添加了更多信息,希望现在可以更好地解释。
-
遗憾的是,如果不使用
shell_exec通过命令行调用脚本,php 就没有异步性 -
是的,我知道 PHP 中没有异步,但主要目标是不惩罚用户在调用操作时我想运行的内部统计信息和进程。谢谢。
标签: php symfony events event-dispatching