Постоянные переменные сервера? - PullRequest
2 голосов
/ 22 марта 2009

Какой самый простой способ хранения одного числа на сервере, чтобы любой сценарий мог получить к нему доступ, используя PHP? В настоящее время у меня есть номер, сохраненный в файле, но это выглядит несколько не элегантно.

Ответы [ 6 ]

5 голосов
/ 22 марта 2009

Здесь нет правильного ответа, но большинство современных систем 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, файл XML, хранящийся в базе данных MySQL, файл XML, хранящийся в базе данных MySQL, которая содержит узел, который указывает на файл, содержащий значение и т. Д.)

Где и как получение будет зависеть от среды вашего приложения, хотя с помощью объекта конфигурации вы можете заранее повысить эффективность (сохранение уже полученных значений в кеше свойств, предварительная выборка определенных значений при создании экземпляра и т. Д.) .)

4 голосов
/ 22 марта 2009

Это зависит от характеристик номера. Это часто обновляется / модифицируется? Это единственный такой номер? Если это не изменилось, вероятно, лучше сделать так, как предлагает Espo, и сохранить его как константу php, которая может быть включена при необходимости. Если у вас есть другие такие числа, вы можете поместить их все в этот файл. Если они часто обновляются, вероятно, лучше поместить их в базу данных.

Но. Если это одно число, которое может быть изменено, и вы не видите необходимости хранить другие номера, почему бы не использовать файл? Просто не забудьте использовать flock () при обновлении, чтобы избежать проблем с параллелизмом.

4 голосов
/ 22 марта 2009

Поскольку ваше приложение, вероятно, уже имеет какой-то тип include-файла в верхней части header.php или simular, вы можете просто создать константу / переменную в этом файле, и все файлы, которые содержат заголовок, также будут иметь доступ к константе.

Это может помочь вам определить константу: http://php.net/constant

1 голос
/ 22 марта 2009

Лучше всего поместить его в таблицу MySQL для последующего извлечения. Это, вероятно, лучший способ хранить информацию в PHP.

0 голосов
/ 04 октября 2011

Вы также можете использовать альтернативный кеш PHP или другие опции кеширования.

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

И вы можете использовать это в сочетании с другими решениями, перечисленными выше, например, сохранение конфигурации в кеш.

0 голосов
/ 22 марта 2009

Если это переменная, которая больше относится к окружающей среде, вы всегда можете использовать ее в Apache в файле httpd.conf вы можете установить следующее:

SetEnv myVar myValue

Затем вы можете использовать $ _SERVER, чтобы получить его

$_SERVER['myVar']

Обычно я устанавливаю переменные для этого, если я хочу настроить одно и то же приложение на нескольких разных виртуальных хостах, но не хочу, чтобы у них были разные параметры в файле конфигурации.

Файл конфигурации также будет соответствовать вашим потребностям. В Zend Framework есть несколько простых в использовании классов, которые могут помочь http://framework.zend.com/manual/en/zend.config.html более конкретный раздел 7.3 и 7.4 описывает, как можно записать параметры конфигурации в текстовом файле или в XML.

если вы предпочитаете простой старый php, у вас есть функция parse_ini_file, которая позволяет вам читать параметры конфигурации из текстового файла http://us.php.net/parse_ini_file

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...