PHP全局变量跨请求持久化

时间:2015-03-05 23:01:46

标签: php performance global-variables

我需要一个全局变量来保持对请求的持久性

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

到目前为止,我能想到的解决方案是

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

但每个请求都会对数据库产生更多打击。

2。将值存储到文件中

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

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

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

define("THE_GLOBAL", "ABC");

同样关注(2)加上php缓存处于活动状态时,可能会发生该值实际更新,直到缓存刷新为止。

4。使用像 redis

这样的nosql

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


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

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

1 个答案:

答案 0 :(得分:2)

我宁愿使用 3

  • 包含php文件比阅读文本文件(两者都是btw)更"优雅"

  • php文件将被* nix文件系统和php操作码缓存缓存

  • 您对操作码缓存没有任何问题,因为当您通过管理后端编辑文件时,该文件将有一个新日期...因此操作码将&# 34;再次编译"

如果您仍然担心,可以使用特定功能使缓存中的单个文件无效。如果使用PHP内置opcache,则可以在更改文件中的值之前使用opcache_invalidatethis is the reference from php.net)。 opcache_invalidate需要 PHP> = 5.5.0 btw。