gpt4 book ai didi

跨请求持久化的 PHP 全局变量

转载 作者:行者123 更新时间:2023-12-04 13:08:17 29 4
gpt4 key购买 nike

我需要一个全局变量在请求中保持不变

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

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

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

但是每个请求都会在数据库上多一次命中。

2.将值存入文件

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

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

该文件而不是变量的原始值将包含 definedefine("THE_GLOBAL", "ABC");
与 (2) 相同的问题加上当 php 缓存处于事件状态时,可能会发生在缓存刷新之前该值实际上并未更新的情况。

4. 像redis一样使用nosql

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

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

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

最佳答案

我宁愿使用 3 :

  • 包含一个 php 文件比读取一个文本文件更“优雅”(顺便说一句)
  • php 文件将由 *nix 文件系统和 php 操作码缓存
  • 缓存。
  • 操作码缓存不会有任何问题,因为当您通过管理后端编辑文件时,该文件将具有新日期...因此操作码将再次“编译”

  • 如果您仍然担心,您可以使用特定函数使缓存中的单个文件无效。如果您使用 PHP 内置 opcache,您可能会使用 opcache_invalidate ( this is the reference from php.net ) 在更改文件中的值之前。 opcache_invalidate需要 PHP >= 5.5.0 顺便提一句。

    关于跨请求持久化的 PHP 全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28889505/

    29 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com