PHP - 适用于所有客户端的全局,可更新的变量

时间:2018-01-15 03:22:44

标签: php

目标:拥有一个全局变量,我网站上的任何php都可以访问。变量将是一个bool。

我坚持的是如何存储所有php脚本可用的变量,但也可以通过php更新。

该变量是一个bool,用于确定当前是否满足某个条件时网站是否加载广告。所以,每天我都会有一个cron作业来重置这个变量,这意味着变量需要通过php更新。

我能想到存储它的唯一方法是通过db表,这对于一个小bool看起来有点过分,或者我存储在public_html目录之外的json文件。

使用json文件,我只需通过我在网站所有页面上的“class lib”文件执行file_get_contents的加载。然后做类似的事情用cron作业更新它。

注意:我的所有页面上都有一个php文件,因此在每个页面上包含一个文件都不是问题。

有更好的方法吗?如果有一种方法我可以设置一个PHP超全局或其他东西,那将是很好的,但我不确定是否有类似$ _SERVER ['custom-variable']的设置,或者它是否适合该会话。

道歉,如果这是对PHP超级全局/常量如何工作的简单误解。

我感谢任何帮助。

2 个答案:

答案 0 :(得分:2)

有两种选择:

  1. 只需将其存储在数据库中即可。这是一个非常合理的解决方案。

  2. 将其存储在您想要的任何格式的文件中。如果你想存储比单个字符串或数字更复杂的东西,JSON很方便。

  3. 将其存储在PHP文件中,该文件返回一个值,例如

    <?php return array("ads_enabled" => true);
    

    然后require()该文件 - require()调用将返回该值。如果您的服务器启用了PHP操作码缓存,这将比加载普通文件更快,因为文件的内容将被缓存。

    请注意,该文件无法返回false,因为这与include()失败无法区分。

  4. 以下是可行选项:

    • 将其存储在会话中。会话是按用户进行的,并且空白。

    • 将其存储在内存缓存中,如APCu或Memcache。缓存不是持久存储;该值可能会从缓存中逐出。

    • 将其存储在环境变量中。在大多数服务器环境中,环境变量很难更新。

答案 1 :(得分:0)

SetEnv APPLICATION_ENV&#34; development&#34;

如果您使用的是Apache并且有权修改它,请在您的Apache vhost定义中使用它。我想你可以在.htaccess文件中做类似的事情。

您可以使用.env文件和库来读取该文件。

如果您使用的是前端控制器,其中所有请求都通过单个index.php文件,那么您可以在那里设置全局变量或常量。