我需要一个全局变量来保持对请求的持久性
我知道类似的问题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)。但也许我错了。
非常欢迎任何有效论据支持的指示或建议。
答案 0 :(得分:2)
我宁愿使用 3 :
包含php文件比阅读文本文件(两者都是btw)更"优雅"
php文件将被* nix文件系统和php操作码缓存缓存
您对操作码缓存没有任何问题,因为当您通过管理后端编辑文件时,该文件将有一个新日期...因此操作码将&# 34;再次编译"
如果您仍然担心,可以使用特定功能使缓存中的单个文件无效。如果使用PHP内置opcache,则可以在更改文件中的值之前使用opcache_invalidate
(this is the reference from php.net)。 opcache_invalidate
需要 PHP> = 5.5.0 btw。