Pergunta

Eu estou escrevendo um aplicativo e vou ter alguns dicionário valores em muitos idiomas diferentes.Eu sei que eu poderia usar o GetText, mas AFAIR arquivos precisam ser compilados após a edição, e eu quero deixar o usuário editar o dicionário, e eu não recompilar .mo arquivos no servidor.Eu não sei quantos idiomas são utilizados, então a solução deve ser elástica.

Eu projetei o banco de dados assim que funciona bem, e o esquema parece bem, mas para cada valor de dicionário, há um par de associações, de modo que a solução não é muito rápido.

Por essa razão, eu estou pensando em armazenar dicionário valores de uma só vez, e atualizá-lo apenas após a edição de um valor.Infelizmente, PHP variáveis estáticas não poderia ser utilizado, porque eles morrem no final do pedido.Eu não quiser usar a sessão, porque vou ter de fazer chamadas de DB por usuário.Idealmente, eu gostaria de usar variáveis estáticas como em Java - eles estão vivendo enquanto aplicação de viver na JVM.

Qual é a melhor solução para armazenar algumas variáveis (no meu exemplo, dicionários, entradas de dicionário, etc.) por um longo tempo (não por pedido) para todos os usuários (não por usuário)?

Eu estou pensando em fazer algo como DictionaryValues classe, serializá-lo uma vez e, em seguida, anular a serialização é cada solicitação.Toda vez que alguém vai editar o dicionário, o objeto poderá ser serializado novamente e vai substituir o antigo objeto serializado.É claro que a edição vai ocorrer, raramente, em comparação com a frequência dicionário valores serão lidos.

Esta é uma boa solução?Devo serializar o objeto e armazená-lo no disco ou escrever para o banco de dados?Qual é mais rápido?

Talvez você a encontrar a melhor solução para esse problema?

Foi útil?

Solução

Você poderia tentar PHP APC.É rápido e fácil de usar.Você pode serializar/desserializar objetos e armazenar/obtê-los facilmente.

Em um ambiente distribuído, você pode executar as mesmas funções usando memcache.

Outras dicas

Algumas opções se memcache / APC é demais ou não é possível:

Você poderia "compilar" o seu banco de dados os valores de freqüência em um arquivo PHP e incluir isso.Que seria o mais rápido de análise e processamento-sábio.

Se você não precisa de todos dicionário de valor em cada página (muito provável, não é?) você pode querer usar um cache de tabela que pode funcionar sem as Associações.Essa seria a melhor solução a partir de uma pegada de perspectiva.

Há um par de opções:

  1. Você pode usar memória compartilhada (shmop ou memcache).
  2. Você poderia cache para um arquivo ou banco de dados - tente PÊRA::Cache_Lite (ou APC como o @jldupont sugere)
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top