我需要一个全局变量来跨请求保持不变
我知道类似的问题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)。但也许我错了。
任何有有效论据支持的指示或建议都将非常受欢迎。
有什么好方法可以在 PHP 脚本的多次调用中保留一小段数据,以便脚本的任何调用都可以访问和修改其值 - 无论谁调用该脚本?
我的意思是与$_SESSION变量类似的东西,但会话严格是针对每个客户端的;一个客户端无法访问另一客户端的会话。无论谁访问它,这个都是一样的。
丢失值或使其损坏(例如,通过同时启动两个脚本的竞争条件)并不是一个大问题 - 如果它在 90% 的时间内正确读取,那就令人满意。OTOH,虽然我知道我可以只使用磁盘上的一个简单文件,但我仍然更喜欢基于 RAM 的解决方案,不仅仅是为了速度,而且从不太耐磨的闪存运行,无休止的写入会很糟糕。