php - ZF2 应用程序范围的 var(自定义唯一请求 id)

标签 php zend-framework2 zend-framework-modules zend-log

我正在使用 Zend-Framework2,我想记录有关请求的信息。 并非所有服务器都提供 $_SERVER['UNIQUE_ID'],因此我想生成自己的(请参阅 http://en.wikipedia.org/wiki/Universally_unique_identifier 了解格式)。

在 ZF2 中,一切都是在模块内完成的,但我想创建一个应用程序范围的变量或常量,其中包含唯一的 ID。 我可以将它添加到index.php,但这不是我认为的方法...另一个选择是唯一请求ID的生成是在被调用模块的onBootstrap方法中完成的,但是然后我'我重复了一遍,我认为这是不可取的。

理想情况下,我应该将生成 UUID 的代码放在哪里,并将其添加为应用程序范围的变量/常量?

提前致谢!

类似问题:Log each request in ZF2

最佳答案

Another option is that the generation of the unique request id is being done in the onBootstrap method of the module that is called, but then I'm repeating myself and that is not desirable, I think.

我认为你在这里误解了模块,Ivo。 onBootstrap 方法会为每个具有该方法的模块调用,无论最终为当前请求解析和分派(dispatch)哪个模块。这不是路由器找到 Controller 然后引导单个模块的情况,它们都是在任何路由发生之前由 ModuleManager 引导的。

从这个角度来看,您可以将其放置在模块中,在 Bootstrap 上生成 UUID。为了使其以方便的方式在站点范围内可用,请将该值设置为服务,然后可以通过服务管理器在任何地方使用它。

public function onBootstrap(EventInterface $e) {
    $sm = $e->getApplication()->getServiceManager();
    $uuid = isset($_SERVER['UNIQUE_ID']) ? $_SERVER['UNIQUE_ID'] : yourUUIDGeneratingMethod();
    $sm->setService('UUID', $uuid);
}

关于php - ZF2 应用程序范围的 var(自定义唯一请求 id),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15700838/

相关文章:

PHP 编译失败,体系结构 x86_64 的 undefined symbol ,macOS Sierra 上的 libiconv

php - 如何使用 ZF2 获取数组中的结果

php - Zend Framework 仅加载默认模块 Controller

PHP 在 foreach 中创建键 => 值对

php - 我可以只使用多个表单的输入表单吗?

php - 如何在 Zend Framework 2 中配置学说扩展?

php - Zend Framework - 重定向到不同模块中的 IndexController

zend-framework - Zend Framework 模块应该包含哪些功能?

php - 使用 MySQL 计算连续天数

php - 多个模块的 ZF2 事件