0

有“不要在 Aerys 中使用任何阻塞 I/O 功能”。在https://amphp.org/aerys/io#blocking-io发出警告。如果我需要使用 PDO(例如 Prooph 组件)并且想要重用已初始化的应用程序实例来处理不同的请求,我是否应该使用 PPM 而不是 Aerys?

我没有绑定到任何现有的 PPM 适配器(例如 Symfony)。在 Aerys ( https://github.com/php-pm/php-pm/pull/267 ) 上使用 PPM 时,有没有办法重用 Aerys 代码(例如,路由器)以实现请求-响应逻辑?

4

1 回答 1

1

-w如果您想使用阻塞功能,您可以使用命令行脚本的开关来增加工作人员数量。这绝对不是最优的,但是如果有足够的工人,阻塞应该不会太明显,除了可能发生的延迟增加。

另一种可能性是将阻塞调用移动到一个或多个工作线程中amphp/parallel

只要响应相对较快,一切都应该没问题。如果有很多负载并且事情变得更慢并且可能超时,那么问题就开始了,因为这些是非常长的块。

与直接使用 Aerys 相比,PHP-PM 并没有提供太多好处。它将请求重定向到当前空闲的工作人员,但是在负载足够高的情况下,内核负载平衡可能会足够好,并且并非所有需要更长时间的请求都会被路由到一个工作人员。事实上,使用 Aerys 可能会更好,因为它已经准备好生产并且有多个独立的工作人员而不是一个可能成为瓶颈的主工作人员。PHP-PM 可以以更好的方式解决这个问题,但目前还没有实现。此外,Aerys 支持保持连接,PHP-PM 目前不支持。

于 2017-10-02T19:41:44.050 回答