目标:拥有一个全局变量,我网站上的任何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超级全局/常量如何工作的简单误解。
我感谢任何帮助。
答案 0 :(得分:2)
有两种选择:
只需将其存储在数据库中即可。这是一个非常合理的解决方案。
将其存储在您想要的任何格式的文件中。如果你想存储比单个字符串或数字更复杂的东西,JSON很方便。
将其存储在PHP文件中,该文件返回一个值,例如
<?php return array("ads_enabled" => true);
然后require()
该文件 - require()
调用将返回该值。如果您的服务器启用了PHP操作码缓存,这将比加载普通文件更快,因为文件的内容将被缓存。
请注意,该文件无法返回false
,因为这与include()
失败无法区分。
以下是不可行选项:
将其存储在会话中。会话是按用户进行的,并且空白。
将其存储在内存缓存中,如APCu或Memcache。缓存不是持久存储;该值可能会从缓存中逐出。
将其存储在环境变量中。在大多数服务器环境中,环境变量很难更新。
答案 1 :(得分:0)
SetEnv APPLICATION_ENV&#34; development&#34;
如果您使用的是Apache并且有权修改它,请在您的Apache vhost定义中使用它。我想你可以在.htaccess文件中做类似的事情。
您可以使用.env文件和库来读取该文件。
如果您使用的是前端控制器,其中所有请求都通过单个index.php文件,那么您可以在那里设置全局变量或常量。