Pregunta

Estoy escribiendo una aplicación y voy a tener algunos valores del diccionario en muchos idiomas diferentes. Sé que podría utilizar GetText, pero los archivos AFAIR que ser compilado después de la edición, y quiero dejar diccionario del usuario editar y no puedo volver a compilar .mo archivos en el servidor. No sé cuántos idiomas se utilizará, por lo que la solución debe ser elástica.

he diseñado la base de datos por lo que funciona bien, y el esquema se ve muy bien, pero por cada valor del diccionario hay un par de combinaciones, por lo que la solución no es demasiado rápido.

Por eso estoy pensando en el almacenamiento de los valores del diccionario de una vez, y refrescar sólo después de editar un valor en ella. Por desgracia, las variables estáticas de PHP no se podían utilizar, porque se mueren al final de la solicitud. No quiero usar la sesión, porque voy a tener que hacer DB llama por usuario. Idealmente me gustaría utilizar variables estáticas al igual que en Java -. Que están viviendo, siempre y cuando la aplicación en vivo en JVM

¿Cuál es la mejor solución para almacenar algunas variables (en mi ejemplo - diccionarios, entradas de diccionario, etc.) durante mucho tiempo (no por petición) para todos los usuarios (no por usuario)?

Estoy pensando en hacer algo así como la clase DictionaryValues, serializar una vez, y luego Deserialize que cada petición. Cada vez que alguien va a editar el diccionario, será objeto serializado de nuevo y sustituirá antigua objeto serializado. Por supuesto edición ocurrirá raras veces en comparación con la frecuencia con valores diccionario será leído.

¿Es esta una buena solución? Debería serializar el objeto y almacenarlo en el disco o escribir a la base de datos? ¿Cuál es más rápido?

Tal vez a encontrar una mejor solución para ese problema?

¿Fue útil?

Solución

Usted podría intentar PHP APC . Es rápido y fácil de usar. Puede serializar / deserializar objetos y tienda / conseguirlos fácilmente.

En un entorno distribuido, puede realizar las mismas funciones usando Memcache .

Otros consejos

Algunas opciones si memcache / APC es demasiado o no es posible:

Se puede "compilar" sus valores de base de datos con frecuencia en un archivo PHP y que lo incluya. Ese sería el parsing- y procesamiento en cuanto más rápido.

Si no necesita cada valor del diccionario en cada página (muy probable, ¿no es así?) Es posible que desee utilizar una tabla de almacenamiento en caché que puede funcionar sin los puntos de unión. Esa sería la mejor solución desde el punto de vista huella.

Hay un par de opciones:

  1. Se puede usar la memoria compartida ( shmop o memcache ).
  2. Usted puede almacenar en caché a un archivo o base de datos - tratar PEAR :: Cache_Lite (o < a href = "http://php.net/apc" rel = "nofollow noreferrer"> APC como @jldupont sugiere)
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top