【发布时间】:2016-08-04 18:51:57
【问题描述】:
我正在开发一个基于 PHP/MySQL 的产品搜索应用程序。在该应用程序中,我们有一些从数据库中填充的全局变量。由于这些变量对于所有搜索请求都是通用的,因此无需在每次搜索请求到达服务器时都进行填充。
我看到了一些使用 memcache 和 APC 的建议,但问题是我们无权在服务器中安装它们。有什么方便的方法让这些变量只初始化一次并用于所有服务器请求?
一些变量的例子:
$result = $this->db->query("SELECT brand_name FROM brands");
if ($result->num_rows > 0) {
foreach ($result->rows as $row) {
if ($row['brand_name'] != '') {
$GLOBALS["filter"]['brand_name'][] = $row['brand_name'];
}
}
}
它包含在搜索查询中用于比较的品牌名称。同样,我们还有许多其他预定义的全局变量。
【问题讨论】:
-
这行得通吗?一般来说,全局变量可能会很麻烦,但如果这有助于解决您的问题,那可能不是一个糟糕的主意。记录操纵全局变量的函数总是一个好主意,这样它们的影响就众所周知了。没有什么比其他一些想要控制
$GLOBALS['filter']的代码更糟糕的了,这两者就会发生冲突。 -
@tadman 我有 $GLOBALS["filter"]['brand_name']、$GLOBALS["filter"]['categories'] 等格式的全局变量。我可以将变量从全局更改为任何其他变量,但我需要一个解决方案,以便它不会针对每个服务器请求进行初始化。
-
brands表中的数据多久更改一次? -
@MonkeyZeus 很少,几个月一次。我们可以认为这些值是静态的。
-
网站在哪个 PHP 版本上运行?