Mysql
 sql >> Database >  >> RDS >> Mysql

Il modo migliore per memorizzare le impostazioni di un'app PHP?

Per un sito singolo, piccolo e semplice, inserirei semplicemente la configurazione in un file PHP. Mantieni la semplicità. PHP probabilmente non analizza nulla più velocemente di quanto non analizzi PHP. Se si utilizza APC, il bytecode compilato viene persino memorizzato nella cache, sebbene il bytecode venga quindi eseguito nuovamente per ogni richiesta. Per un piccolo file di configurazione, questa esecuzione di bytecode dovrebbe richiedere pochissimo tempo; per un file molto grande, potrebbe volerci un po' più di tempo.

Per i siti ad alto traffico con configurazioni di grandi dimensioni, memorizzare nella cache i dati di configurazione in APC (ad es. come un singolo array) è una buona idea:per lo meno, si risparmia il sovraccarico dell'esecuzione effettiva le istruzioni nel tuo file config.php. In particolare, Facebook fa questo. Quando stai servendo molte richieste al secondo, colpire il disco per leggere un file di configurazione (usando parse_ini_file, un parser XML, ecc.) su ogni richiesta è fuori questione.

Per il mio attuale progetto, ospitiamo molti siti, ognuno con la propria configurazione. Ogni sito aveva sia un database che un file di configurazione; tuttavia, assicurarsi di utilizzare sempre il file di configurazione corretto con il database corretto può diventare un mal di testa. Inoltre, le modifiche richiederebbero la modifica delle cose in due punti:db e config. Dimenticare l'uno o l'altro causava sempre problemi, e succedeva troppo frequentemente.

Abbiamo spostato la configurazione nel database, in modo che non sia possibile separare un db dalla sua configurazione corretta e qualsiasi modifica al codice richiede solo l'aggiornamento del database. Anche i dati della tabella di configurazione vengono memorizzati nella cache in modo aggressivo in APC, quindi li interroghiamo raramente.

Quindi, per ricapitolare:

  1. Sito piccolo :basta usare un file config.php
  2. Sito molto grande :cache in APC
  3. Più siti :memorizza la configurazione nel database per ridurre il carico di amministrazione; cache in APC per ridurre gli accessi al database