Domanda

Sto scrivendo un'applicazione e avrò alcuni valori del dizionario in molte lingue diverse. So che potrei usare GetText, ma i file afair deve essere compilato dopo la modifica, e voglio lasciare Modifica dizionario utente, e non posso ricompilare i file .mo sul server. Non so quante lingue saranno utilizzati, in modo da soluzione deve essere elastico.

ho progettato database in modo che funziona bene, e lo schema sembra bene, ma per ogni valore di dizionario ci sono un paio di join, quindi la soluzione non è troppo veloce.

Per questo motivo sto pensando di memorizzare i valori del dizionario una volta e aggiornare solo dopo la modifica di un valore in esso. Purtroppo, variabili statiche PHP non possono essere usati, perché muoiono alla fine della richiesta. Non voglio usare la sessione, perché dovrò fare DB chiamate per utente. Idealmente mi piacerebbe utilizzare le variabili statiche come in Java -. Vivono più a lungo l'applicazione dal vivo in JVM

Qual è la soluzione migliore per memorizzare alcune variabili (nel mio esempio - dizionari, voci di dizionario, ecc) per un lungo periodo (non per richiesta) per tutti gli utenti (non per utente)?

Sto pensando di fare qualcosa di simile classe DictionaryValues, serializzare una volta, e poi deserializzare esso ogni richiesta. Ogni volta che qualcuno si Modifica dizionario, oggetto verrà serializzato nuovo e sostituirà vecchio oggetto serializzato. Naturalmente la modifica si verificherà raramente rispetto a quanto spesso i valori dizionario sarà letto.

Si tratta di una buona soluzione? Dovrei serializzare l'oggetto e memorizzarlo sul disco o scrivere al database? Quale è più veloce?

Forse a trovare una migliore soluzione per questo problema?

È stato utile?

Soluzione

Si potrebbe provare PHP APC . E 'veloce e facile da usare. È possibile serializzare / deserializzare oggetti e negozio / ottenere facilmente.

In un ambiente distribuito, è possibile eseguire le stesse funzioni utilizzando memcache .

Altri suggerimenti

Alcune opzioni se memcache / APC è troppo o non è possibile:

Si potrebbe "Compila" i valori di database spesso in un file PHP e includere tale. Questo sarebbe il parsing- e l'elaborazione-saggio più veloce.

Se non avete bisogno di tutti i valori dizionario in ogni pagina (molto probabilmente, non è vero?) Si potrebbe desiderare di utilizzare una tabella di caching che può funzionare senza il join. Questa sarebbe la soluzione migliore dal punto di vista impronta.

Ci sono un paio di opzioni:

  1. È possibile utilizzare la memoria condivisa ( shmop o memcache ).
  2. Si potrebbe memorizzare nella cache a un file o database - prova a PEAR :: Cache_Lite (o < a href = "http://php.net/apc" rel = "nofollow noreferrer"> APC come suggerisce @jldupont)
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top