创建一个方法,该方法生成一次(第一次)结果,并在第一次调用时返回



我是codeigniter的新手。我有一点问题。比如,一个多次调用并具有复杂查询的函数。此函数将首次生成结果并将结果存储在变量中。当我调用此函数时,它将返回其存储的结果。 假设我有一个类似

public function add_sum(){
$a=2;
$b=3;
return c=$a+$b;
}

这个函数第一次会生成结果,第一次后我会调用这个函数。

$a=2;
$b=3;
return c=$a+$b;

此代码将不会执行。如果没有此块,它将返回 5。希望你们明白我的意思。调用函数是..

public function test(){
$this->add_sum();
}

谢谢。。。

会话不用于存储大量数据。实际上,根据您的系统,它可能会导致问题。饼干是类似的。

如果您的查询很大,但返回了一些小的东西,例如您建议的数字,那么将其存储在会话变量中是完全可以的。如果它返回像大数组这样的东西,那么你可以考虑使用某种缓存机制。Codeigniter有一个内置的数据库缓存,我不一定相信它的方法。但是,如果您只想缓存一些查询,则通常是使用它的方式:https://www.codeigniter.com/user_guide/database/caching.html#function-reference 否则您可以在database.php中打开数据库缓存(除非您完全了解后果,否则不要这样做(。

您可以考虑从文件中写入/读取结果,但您必须对其进行基准测试,以查看它是否比仅执行SQL操作更快。

现在回答您的具体问题:

public function test(){
if ($this->session->has_userdata('test_response')) {
return $this->session->test_response;
}
$sum = $this->add_sum();
$this->session->set_userdata('test_response', $sum);
return $sum;
}

如您所见,在第一次运行时,条件语句将评估为 false,add_sum将运行,其内容将分配给会话变量。 在后续运行中,将立即从会话中检索此变量。

最新更新