有没有人知道如何在两个操作之间传递自定义Service Manager
的实例?正如Zend Framework 2文档所述,如果SM
类中的'shared'选项不会设置为Module.php
,false
将保留它的实例。但是,通过$manager = $this->getServiceLocator()->get('MyServiceManager');
在不同的操作中获取服务管理器将返回MyServiceManager
类的不同实例。我想要实现的是:我使用API调用第三方服务,显然返回带有各种信息数据的响应,但是,如果用户前往另一个操作/页面,其中先前从API请求返回的相同数据是将它保存为MyServiceManager
属性并在需要时从类实例中进行访问(如果已设置,而不是每次都发送另一个API请求)。
如果可以的话,我会非常乐意倾听和学习!
答案 0 :(得分:3)
请求生命周期(使用mod_php,fastcgi / fpm)通常会阻止共享资源。与在应用程序服务器上运行的语言不同,PHP没有内置的共享对象实例的方式。
对于每个传入请求,Web服务器都会创建一个php运行时的“新”实例,执行请求并自行清理。
您可以使用APC序列化对象实例或内存缓存以在请求之间临时存储结果。