como limpar corretamente o cache do PHP com o Capistrano

2

estamos usando o capistrano para implantar nosso aplicativo PHP. e o php-apc é ativado no servidor de produção com apc.stat = 0. Na configuração do capistrano, há uma regra para limpar o cache do APC após a implementação: update:

after "deploy:update", "clear_apc_cache"

o cache foi desabilitado com sucesso: apc.php 'Exibir Estatísticas do Host' mostra um tempo de atividade de 0 minuto, números de arquivos em cache & hits está perto de 0 (não 0 porque há bastante tráfego e alguns arquivos são armazenados em cache antes que possamos verificar apc.php)

o problema é que, em algum momento, um arquivo antigo ainda é armazenado em cache no apc. Eu acho que isso é devido a uma solicitação HTTP começando antes de capistrano atualizar o symlink 'atual' e terminando depois de limpar o cache do APC. Nesse caso, o arquivo incluído após apc clear nesta solicitação ainda é da pasta de revisão antiga (estamos usando o caminho relativo em include s e requer s) e são salvos no cache do apc

Existe uma maneira de consertar isso permanentemente? sem atualizar todos incluem se requerem s

por enquanto, tentarei atrasar o "clear_apc_cache" por um ou dois segundos, mas temo que cause problemas durante o atraso (e algumas solicitações podem demorar mais de 2 segundos)

    
por Mathieu 01.08.2013 / 11:45

1 resposta

2

Esta resposta indica que você precisa passar um argumento para clear_apc_cache e que somente com apc.enable_cli=1 o APC trabalho de limpeza de cache através de chamadas CLI.

Você pode querer clear_apc_cache novamente com o gancho after:restart para garantir que a versão anterior esteja totalmente limpa.

    
por 07.08.2013 / 07:59