我有一个脚本运行时间过长,我一直在努力优化它以使其更快。我知道需要额外时间的一件事是我必须多次运行相同的查询。我希望能够存储该查询的结果(无需将其写入数据库),以便稍后可以引用它的值而无需再次运行查询。
我正在极大地简化下面的脚本,但希望这能给你一个想法。
假设我有两个函数,每个函数都返回一个值:
function a(){
$query = "SELECT SUM(price) FROM table_1 WHERE zip='$this->zip'";
$result = mysql_query($query) or die(mysql_error());
while($row = mysql_fetch_array($result)){
return $row['SUM(price)'];
}
function b(){
$query = "SELECT SUM(price) FROM table_2 WHERE zip='$this->zip'";
$result = mysql_query($query) or die(mysql_error());
while($row = mysql_fetch_array($result)){
return $row['SUM(price)'];
}
假设函数 a() 返回值 10,函数 b() 返回值 5
现在,假设我的脚本是这样的:
if (function a() > 5) { echo 'it is greater than 5!' }
if (function a() < 5) { echo 'it is less than 5!' }
if (function b() == 5) { echo 'it equals 5!' }
if (function b() > 10) { echo 'it is not greater than 5!' }
如果我理解正确,上面的脚本会导致对我的数据库进行 4 个单独的查询。是否可以存储每个查询的初始运行?我想到的一件事是这样做:
$a = function a();
$b = function b();
然后让我的脚本是这样的:
if ($a > 5) { echo 'it is greater than 5!' }
if ($a < 5) { echo 'it is less than 5!' }
if ($b == 5) { echo 'it equals 5!' }
if ($b > 10) { echo 'it is not greater than 5!' }
这会导致查询在我定义 $a 和 $b 时每个只运行一次吗?是否有另一种方法可以考虑我没有想到的?
谢谢你的帮助!