存储全局变量的最佳方法

时间:2009-01-13 20:45:49

标签: php mysql

我正在用PHP编写一个应用程序,该应用程序使用了整个脚本中使用的大量全局变量。现在,我有一个配置文件,它存储了一堆使用define()函数创建的全局变量,但由于我将拥有这么多,所以最好在数据库中创建一个表,即只包含变量名称和值,并且访问它们时有一个查询数据库,查找变量,返回值以及缓存该值以供将来使用的函数。

我也欢迎其他存储全局变量的想法。

2 个答案:

答案 0 :(得分:9)

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

我发现最简单的方法是只有一个名为'config.php'的文件来设置所有常量,它更快更简单。

答案 1 :(得分:0)

嗯,这取决于您的应用程序的结构。如果在给定的页面加载中,您只需要几百个变量中的一个或两个,那么基准测试可能表明查询数据库可能比包含大量配置文件更快。但是,每次用户想要执行任何操作时,您都需要警惕使用太多查询来阻塞数据库。缓存可以减少冗余请求所增加的开销,但这就是它的使用范围。

如果这些变量大多是短字符串或布尔标志,我认为你的答案很大程度上依赖于你能够很好地维护的东西。如果这些变量很少改变并且总是手动更改,那么结构良好的.ini文件将比大型数据库更容易维护。如果这些变量不断变化而且永远不会手工变化,那么将所有变量加载到数据库中可能会更聪明。

就个人而言,我发现自己处于这两种情况,并且我已经相应地使用了这两种方法。如果你真的优柔寡断,你可以随时做一些基准测试。从网络数据库中提取配置信息的页面加载时间,然后使用.ini文件(或。define()的.php文件加载页面加载时间。)

(从迂腐的角度来说,define()在全局范围内创建常量,而不是全局变量。)