服务器发送的事件和ZF 2.5

时间:2015-08-20 01:24:40

标签: zend-framework2 comet

我正在使用ZF2.5开发一个应用程序。我需要创建一个SSE(服务器发送事件)模块,但我无法使用控制器来实现这一点,它不会使我的连接保持活动状态(类型:text / event-stream)。所以我在一个单独的php文件中这样做,但我需要对此进行身份验证,并且需要从此文件到#Ze;"以及#34; Zend环境。

它可以吗?有什么建议吗?

1 个答案:

答案 0 :(得分:0)

是的,你可以在ZF2中做到这一点,但这并不容易。 SSE的基础是连接保持打开状态。所以你需要在php中以某种方式while(true)similar来保持进程运行。

当功能完成时,控制器终止并发送响应。你必须把这个逻辑变成一个控制器。接下来,响应处理程序缓冲ZF2中的所有输出,然后立即发送所有数据。您需要重新编程ZF2输出缓冲流,这样您就可以直接从控制器发送数据而无需缓冲。否则,只有当你打破循环时,你的while(true)循环才会发送数据。

简而言之:ZF2几乎可以做任何事情,包括你的需求。但事情并非那么简单。

另一种方法是在独立脚本中加载服务管理器。这也是完全可能的。使用应用程序配置并合并其他配置,您需要构建完整的配置并为其配置SM。然后在实例化时,您可以充分利用其系统。

此外,仅实例化SM可能很难。这里更容易实例化应用程序并从中获取SM:

$app = Zend\Mvc\Application::init(include 'config/application.config.php');
$sm = $app->getServiceManager();

注意你不要跑()'应用程序,只引导它!