PHP中是否有服务器级静态变量?

PHP中是否有服务器级静态变量?,php,scope,declaration,Php,Scope,Declaration,我的网站(由PHP提供服务)使用了一些计算成本很高的值(而且计算是确定性的),因此我希望在第一次请求时缓存结果。然后我可以使用这个功能: function MyValue($valueID) { if (!isset($myValueCache[$valueID])) { $myValueCache[$valueID] = ... // The long and expensive calculation. } return $myValueCache[$valueID];

我的网站(由PHP提供服务)使用了一些计算成本很高的值(而且计算是确定性的),因此我希望在第一次请求时缓存结果。然后我可以使用这个功能:

function MyValue($valueID) {
  if (!isset($myValueCache[$valueID])) {
    $myValueCache[$valueID] = ... // The long and expensive calculation.
  }
  return $myValueCache[$valueID];
}
问题是,如何在脚本的不同调用之间声明
$myValueCache
以保持其值?我称之为“服务器级静态变量”或类似的东西。简单的
静态
变量不是理想的解决方案。写:“一旦脚本退出,静态变量就会被销毁,就像局部和全局变量一样。”我想保留该值,直到我显式地
取消设置它。谢谢:)


PS.“昂贵”指的是数据库访问。计算和硬编码结果在开发时间是不可能的。

< P>您应该考虑使用任何内存数据库,如ReDIS或MyCCALH。您还可以尝试缓存文件中的值,但是它会比内存数据库慢。

< P>您应该考虑使用任何内存数据库,如ReDIS或MyCache。您也可以尝试将值缓存到文件中,但缓存速度会比内存数据库慢。

谢谢,但DBMS不是我的选择,而且这种解决方法并不能真正解决这个问题。我们无法仅针对此问题将整个数据库移动到内存中。您将该变量存储在内存缓存中,而不是数据库中。相信我,出于缓存目的,您找不到比内存存储更好的方法。它之所以被称为数据库,是因为它看起来很相似,但实际上它与经典的DBMS没有任何关系。谢谢,但DBMS不是我的选择,这个解决方法并不能真正解决这个问题。我们无法仅针对此问题将整个数据库移动到内存中。您将该变量存储在内存缓存中,而不是数据库中。相信我,出于缓存目的,您找不到比内存存储更好的方法。它只是被称为数据库,因为它看起来很相似,但事实上它与经典的DBMS无关。如果是特定于用户的,则将其填充到会话中,如果不是,则将其保存在DB字段中,因为您已经有了DB。不贵
从缓存中选择value,其中id=$valueID
好吧,经过长时间的沉默,我认为最终的答案是:“PHP中没有这样的变量声明。”(但我不确定,这就是我问它的原因。)感谢推荐的解决方法。带有@AbraCadaver解释的内存中数据库可能是一个解决方案。如果是特定于用户的,则将其填充到会话中,如果不是,则将其保存在DB字段中,因为您已经有了DB。不贵
从缓存中选择value,其中id=$valueID
好吧,经过长时间的沉默,我认为最终的答案是:“PHP中没有这样的变量声明。”(但我不确定,这就是我问它的原因。)感谢推荐的解决方法。带有@AbraCadaver解释的内存中数据库可能是一个解决方案。