gpt4 book ai didi

php > 性能 > session vs 全局变量 vs db >?

转载 作者:行者123 更新时间:2023-12-04 05:55:24 26 4
gpt4 key购买 nike

在比较以下场景时,哪一个是最快的?下面的示例示例代码。

基本上,我试图找出使用全局变量的最佳替代方法是什么。
我存储的全局变量对于所有用户都是相同的......它们是所有用户都相同的应用程序级别值,例如 application_name 或 application_home_page_url ...

我将有大量使用这些应用程序级别值的函数,我不想通过参数传递它们,尽管我认为这是最快的方法..我的选择似乎是使用数据库查找或使用 session 变量或全局..

当然,您可以通过抛出 assoc 将其提升到一个新的水平。数组加入方程,使其更快/更慢。

我们必须牢记的另一个因素是,我们在这里谈论的是大量用户。

那么,在单个函数中使用这些应用程序级变量的最佳方法是什么?

//for global based approach
$my_global_var1 = "abc";
$my_global_var2 = "xyz";

//for global + array based approach
$my_globals['var1'] = "abc";
$my_globals['var2'] = "xyz";

//for session based approach
$_SESSION['my_global_var1'] = "abc"
$_SESSION['my_global_var2'] = "xyz";

//for session + array based approach
$_SESSION['my_globals']['var1'] = "abc";
$_SESSION['my_globals']['var2'] = "xyz";

//for db based approach
$varname = 'var1';

//or some other way, you may think of
//??

function func1()
{
global $my_global_var1;
global $my_global_var2;
//....

my_var1 = $my_global_var1;
}


function func2()
{
$my_var1 = $my_globals['var1'];
}

function func3()
{
$my_var1 = $_SESSION['my_global_var1'];
}

function func4()
{
$my_var1 = $_SESSION['my_globals']['var1'];
}

$my_var1 = func5($varname)
function func5($varname)
{
return lookup($varname);
}

最佳答案

我建议为此使用 Registry 类。

我确信有不止一种方法可以创建这样的类,但我更喜欢使用单个静态类:

class Registry {
private static $values = array();

public static function set($key, $value) {
self::$values[$key] = $value;
}

public static function get($key) {
return self::$values[$key];
}
}

然后,您只需将注册表包含在应用程序的顶部,并在使用 Registry::set('abc', 'xyz'); 期间将其连接起来。和 Registry::get('abc');
有关此技术的一些链接:

http://www.devshed.com/c/a/PHP/Registry-Design-Pattern/

http://www.phpro.org/tutorials/Model-View-Controller-MVC.html#5

关于php > 性能 > session vs 全局变量 vs db >?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9568579/

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