php - Zend Framework 2 服务管理器

标签 php zend-framework zend-framework2 servicemanager

有人知道如何在两个操作之间传递自定义Service Manager实例吗?正如 Zend Framework 2 文档所述,如果 Module.php 类中的“shared”选项未设置为 false<,SM 将保留其实例。/。但是,在不同操作中通过 $manager = $this->getServiceLocator()->get('MyServiceManager'); 获取服务管理器将返回 MyServiceManager 的不同实例类(class)。我想要实现的是:我使用对第三方服务的 API 调用,这显然会返回包含各种信息数据的响应,但是,如果用户前往另一个操作/页面,其中之前从 API 请求返回的相同数据是最好将其保存为 MyServiceManager 属性,并在需要时从类实例中进行访问(如果已设置),而不是每次都发送另一个 API 请求。

如果可能的话,我会非常乐意倾听和学习!

最佳答案

请求生命周期(使用mod_php、fastcgi/fpm)通常会阻止共享资源。与在应用程序服务器上运行的语言不同,PHP 没有共享对象实例的内置方法。

对于每个传入请求,Web 服务器都会创建一个 php 运行时的"new"实例,执行请求并清理自身。

您可以使用 APC 序列化对象实例或使用 memcache 临时存储请求之间的结果。

关于php - Zend Framework 2 服务管理器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17116176/

相关文章:

php - Zend IMAP 搜索和过滤器

zend-framework - 预填充密码字段 zend 框架

php - 防止直接访问操作 Controller

zend-framework2 - ZF2 Controller 插件

php - Ubuntu Apache PHP - 创建和写入 Excel 文档

javascript - 当我重新加载页面并且没有选中 Laravel 6.0 中的单选按钮之一时,如何一次只显示一个表单

php - 对加密的 MySQL 表进行排序和查询

php - 为什么 ajax 响应没有附加到下拉列表?

zend-framework2 - 使用omnipay 通过 securepay 进行处理时出现无效指纹异常

php - 如何合并 Zend Framework 2 模块公共(public)目录