PHP 全局变量在请求之间保持不变

Pao*_*olo 6 php performance global-variables

我需要一个全局变量来跨请求保持不变

我知道类似的问题PHP Persist variable across all requests但我担心哪种解决方案性能更好,因为变量是global必须为每个请求设置的。

目前我能想到的解决方案有

1. 将值存储到数据库中。

但每个请求都会对数据库产生更多的影响。

2. 将值存储到文件中

但每个请求都会到达文件系统。在 *nix 系统上,磁盘访问被缓存,因此进一步的读取应该从 RAM 进行,因此不会影响驱动器。

3. 将值存储到 php include 文件中,并将该文件包含在 Web 应用程序的主入口点处。

该文件而不是变量的原始值将包含define

define("THE_GLOBAL", "ABC");

与 (2) 相同的问题加上由于 php 缓存处于活动状态,因此可能会发生在缓存刷新之前该值实际上并未更新的情况。

4.像redis一样使用nosql

我不喜欢为此设置redis。另外,该变量必须在 Web 应用程序重新启动或系统重新启动后保持不变。实现这一点需要额外的工作。


我认为最好的解决方案是(2)。但也许我错了。

任何有有效论据支持的指示或建议都将非常受欢迎。

Sim*_*nti 2

我宁愿使用3

  • 包含 php 文件比读取文本文件更“优雅”(顺便说一句)

  • php 文件将同时由 *nix 文件系统和 php 操作码缓存进行缓存

  • 您不会遇到操作码缓存的问题,因为当您通过管理后端编辑文件时,该文件将具有新日期......因此操作码将再次“编译”

如果您仍然担心,可以使用特定函数使缓存中的单个文件失效。如果您使用 PHP 内置 opcache,则可以在更改文件中的值之前使用opcache_invalidate这是来自 php.net 的参考)。opcache_invalidate顺便说一句,需要PHP >= 5.5.0