2009-03-21 13 views
2

Was ist der einfachste Weg, eine einzelne Nummer auf einem Server zu speichern, so dass jedes Skript mit PHP darauf zugreifen kann? Derzeit habe ich eine Nummer in einer Datei gespeichert, aber das scheint etwas unelegant.Konstante Servervariablen?

Antwort

5

Hier gibt es keine richtige Antwort, aber die meisten modernen PHP-Systeme zum Erstellen von Webanwendungen haben irgendeine Art von Konfigurationsobjekt. Dies wird oft als Singleton implementiert.

//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'); 
} 

Diese Klasse wird auf jeder angeforderten Seite geladen. Dies gibt jedem Entwickler eine Standard-API, die aufgerufen werden kann, wenn er einzelne Konfigurationswerte abrufen oder setzen möchte, und ermöglicht einem einzelnen Entwickler, den Speicherort und die Art des Abrufs zu steuern (was eine flache Datei, XML-Datei, Speichercache, MySQL-Datenbank, in einer MySQL-Datenbank gespeicherte XML-Datei, in einer MySQL-Datenbank gespeicherte XML-Datei, die einen Knoten enthält, der auf eine Datei verweist, die den Wert enthält, usw.)

Das Wo und Wie des Abrufens hängt davon ab Ihre Anwendungsumgebung, obwohl Sie mithilfe eines Konfigurationsobjekts im Voraus einige Effizienzen erstellen können (Speichern bereits abgerufener Werte in einem Eigenschaftscache, Vorababruf bestimmter Werte bei der Instanziierung usw.)

+0

+1, das ist, was ich im Falle einer 'einzigen Nummer' tun würde – karim79

+0

meintest du 'Get' in der letzten Zeile des Codes? – Kuf

1

Ihre beste Wette wäre, es in eine MySQL-Tabelle für später holen. Das ist wahrscheinlich der beste Weg, um Informationen in PHP zu speichern.

+0

Datenbank über Flat-File jeden Tag. – UnkwnTech

4

Da Ihre Anwendung wahrscheinlich bereits irgendeine Art von Include-Datei oben auf "header.php" oder ähnlich hat, könnten Sie einfach eine Konstante/Variable in dieser Datei erstellen, und alle Dateien, die den Header enthalten Zugang zur Konstante.

Dies kann Ihnen helfen, die Konstante zu definieren: http://php.net/constant

4

, die auf den Eigenschaften der Zahl abhängt. Wird es oft aktualisiert/modifiziert? Ist es die einzige solche Nummer? Wenn es nicht geändert wird, ist es wahrscheinlich besser zu tun, wie Espo es vorschlägt und speichert es als eine PHP-Konstante, die bei Bedarf eingefügt werden kann. Wenn Sie andere solche Nummern haben, können Sie sie alle in diese Datei einfügen. Wenn sie oft aktualisiert werden, ist es wahrscheinlich besser, sie in die Datenbank zu stellen.

Aber. Wenn es sich um eine einzelne Nummer handelt, die sich ändern kann und Sie keine Notwendigkeit für das Speichern anderer Zahlen haben, warum nicht eine Datei verwenden? Denken Sie daran, flock() beim Aktualisieren zu verwenden, um Nebenläufigkeitsprobleme zu vermeiden.

0

Wenn es eine Variable ist, die mehr ist von einer ökologischen Natur könnte man immer Verwenden Sie die in Apache in httpd.conf festlegen können Sie folgende Einstellungen vor:

SetEnv myVar myValue 

Sie können dann _SERVER $ verwenden, um ihn zu holen

$_SERVER['myVar'] 

ich in der Regel Zugriffe auf Variablen auf diesen Satz, wenn ich bin um dieselbe Anwendung auf ein paar verschiedenen virtuellen Hosts zu installieren, aber nicht, dass sie unterschiedliche Parameter in der Konfigurationsdatei haben.

Eine Konfigurationsdatei wird auch Ihren Anforderungen entsprechen. Es gibt einige einfach zu verwendende Klassen im Zend-Framework, die helfen können http://framework.zend.com/manual/en/zend.config.html spezifischer Abschnitt 7.3 und 7.4 beschreibt, wie Sie Config-Parameter in einer Nur-Text-Datei oder in XML schreiben können.

, wenn Sie nur alte PHP lieber haben Sie die Funktion parse_ini_file, die Sie lesen in der Konfigurationsparameter aus einer Textdatei Optionen http://us.php.net/parse_ini_file

0

Sie können auch verwenden, um die Alternative PHP Cache oder einem anderen Caching lässt.

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

Und Sie können dies mit den anderen Lösungen in Kombination verwendet werden oben aufgelistet, beispiel einer Config-Cache zu speichern.