常量服务器变量?

时间:2009-03-21 23:00:06

标签: php variables

在服务器上存储单个数字的最简单方法是什么,以便任何脚本都可以使用PHP访问它?目前,我有一个存储在文件中的数字,但这看起来有些不雅。

6 个答案:

答案 0 :(得分:5)

这里没有正确的答案,但是用于构建Web应用程序的大多数现代PHP系统都有某种Configuration对象。这通常是作为单身实现的

//brain dead config object
class NamespaceConfiguration {
    public static function getInstance() {
        if (!self::$instance instanceof self) { 
          self::$instance = new self;
        }
        return self::$instance;
    }

    public static function set($key,$value){
        //code to set $key/$value paid
    }

    public static function get($key){
       //code to get a $value based on a $key
    }
}

$config = NamespaceConfiguration::getInstance();
$config->set('myNumber',42);
....
function somewhereElse(){
    $config   = NamespaceConfiguration::getInstance();
    $myNumber = $config->set('myNumber');
}

每个页面都会加载此类。这为每个开发人员提供了一个标准API,可以在他们想要获取或设置单个配置值时调用,并允许单个开发人员控制存储位置和检索方式(可以是平面文件,XML文件,内存缓存, MySQL数据库,存储在MySQL数据库中的XML文件,存储在MySQL数据库中的XML文件,其中包含指向包含该值的文件的节点等。

检索的位置和方式取决于您的应用程序环境,尽管通过使用配置对象,您可以预先创建一些效率(将已检索的值存储在属性缓存中,在实例化时预取某些值,等等。)

答案 1 :(得分:4)

由于您的应用程序可能已经在顶部“header.php”或simular上有某种包含文件,您可以在该文件中创建一个常量/变量,并且包含该标头的所有文件也将具有访问权限到常数。

这可以帮助您定义常量: http://php.net/constant

答案 2 :(得分:4)

这取决于号码的特征。经常更新/修改吗?它是唯一这样的数字吗?如果它没有改变,它可能更好地做,因为Espo建议并将其存储为可在必要时包含的php常量。如果你有其他这样的数字,你可以把它们全部放在那个文件中。如果经常更新它们,最好将它放在数据库中。

但是。如果它是一个单一的数字,可能会有变化,而且您不想要存储其他数字,为什么不使用文件呢?只需记住在更新时使用flock()以避免并发问题。

答案 3 :(得分:1)

您最好的选择是将其放入MySQL表中以便稍后获取。这可能是在PHP中存储信息的最佳方式。

答案 4 :(得分:0)

如果它是一个更具环境性的变量,你总是可以在Apache中使用set 在httpd.conf文件中,您可以设置以下内容:

SetEnv myVar myValue

然后您可以使用$ _SERVER来获取它

$_SERVER['myVar']

如果我要在几个不同的虚拟主机上设置相同的应用程序但我不希望它们在配置文件中有不同的参数,我通常会设置varibles。

配置文件也将满足您的需求。 Zend框架中有一些易于使用的类可以提供帮助 http://framework.zend.com/manual/en/zend.config.html 更具体的部分7.37.4描述了如何在纯文本文件或XML中编写配置参数。

如果您更喜欢普通的旧php,您可以使用函数parse_ini_file,它允许您从文本文件中读取配置参数 http://us.php.net/parse_ini_file

答案 5 :(得分:0)

您还可以使用Alternative PHP Cache或其他缓存选项。

http://www.php.net/manual/en/function.apc-add.php

您可以将其与上面列出的其他解决方案结合使用,例如将配置保存到缓存。