Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 存储全局变量的最佳方法_Php_Mysql - Fatal编程技术网

Php 存储全局变量的最佳方法

Php 存储全局变量的最佳方法,php,mysql,Php,Mysql,我正在用PHP编写一个应用程序,它使用了很多全局变量,这些变量在整个脚本中都会用到。现在,我有一个配置文件,它存储了一组通过使用define()函数创建的全局变量,但是由于我将有这么多全局变量,是否最好在数据库中创建一个只包含变量名和值的表,并使用一个查询数据库、查找变量的函数访问这些全局变量,返回值,并缓存该值以备将来使用 我还欢迎使用其他存储全局变量的方法。函数define()创建常量,而不是全局变量。全局变量应该谨慎使用,因为它们可能会意外(或恶意)损坏,但常量是完全安全的 我发现只需要一

我正在用PHP编写一个应用程序,它使用了很多全局变量,这些变量在整个脚本中都会用到。现在,我有一个配置文件,它存储了一组通过使用
define()
函数创建的全局变量,但是由于我将有这么多全局变量,是否最好在数据库中创建一个只包含变量名和值的表,并使用一个查询数据库、查找变量的函数访问这些全局变量,返回值,并缓存该值以备将来使用

我还欢迎使用其他存储全局变量的方法。

函数
define()
创建常量,而不是全局变量。全局变量应该谨慎使用,因为它们可能会意外(或恶意)损坏,但常量是完全安全的


我发现只需要一个名为“config.php”的文件来设置所有常量是最容易的,它更快、更简单。

这取决于应用程序的结构。如果在给定的页面负载中,您实际上只需要几百个变量中的一个或两个,那么基准测试可能会显示查询数据库可能比包含大量配置文件更快。但是,每次用户想做任何事情时,您都需要小心,不要让数据库陷入太多的查询。缓存可以减少冗余请求增加的开销,但这就是它的使用范围

如果这些变量大多是短字符串或布尔标志,我认为您的答案将主要取决于您能够很好地维护什么。如果这些变量很少更改并且总是手动更改,那么结构良好的.ini文件将比大型数据库更易于维护。如果这些变量是不断变化的,而不是手工操作,那么您可能更聪明的做法是将所有变量加载到数据库中

就我个人而言,我发现自己在这两种情况下都使用了这两种方法。如果你真的犹豫不决,你总是可以做一些基准测试。对从数据库中提取配置信息的页面加载计时,然后使用.ini文件(或充满
define()
s的.php文件)对页面加载计时


(学究般地说,
define()
在全局范围内创建常量,而不是全局变量。)

如果您使用了太多全局变量,以至于需要问这个问题,那么很有可能通过重构来改进代码。您在常量中存储的是什么样的数据?配置选项?有些东西告诉我你没有编写面向对象的代码,这有时是可以的,但当事物在相互关联的对象中时,就有了很大的能力。你使用常数的事实证实了这一点。是的,我认为我现在这样做很好,因为这是最快的方法。