Como funciona a expiração de memória compartilhada do PHP APC?

2

Estou usando o APC e vejo que ainda tenho 25MB de memória livre.

No entanto, no Cache full count , vejo que já tenho 8 .

Então, por que isso acontece? E se meu entendimento for: APC não é um cache LRU, então por que eu ainda tenho que liberar memória quando eu tiver atingido a contagem total?

    
por Ryan 13.06.2014 / 07:42

1 resposta

0

Independentemente do que seja o algoritmo de invalidação de cache, provavelmente haverá alguma quantidade de espaço livre, ou pelo menos é esperado que o espaço seja liberado sempre que a rotina de invalidação for executada. Então você deve esperar que haja algum espaço claro quase o tempo todo.

Para ser honesto, estou tendo alguma dificuldade em entender exatamente o que você está vendo e o que está perguntando. Você pode obter mais ajuda se reformular sua pergunta e adicionar detalhes. Se as quantidades específicas de memória a que você se refere são importantes para responder à sua pergunta, você deve fornecer um pouco mais de contexto sobre quanto espaço de memória compartilhada alocou no total e talvez sobre como o espaço livre varia com o tempo.

25MB de espaço livre parece muito pequeno para mim.

Acho que o algoritmo é que, quando o cache está cheio, a APC faz uma passagem completa pelo conteúdo do cache, identificando todo o conteúdo expirado. Não tenho certeza do que acontece se nada estiver expirado. Presumivelmente, o Cache_full_count é uma contagem de quantos desses passes ocorreram. Parece um palpite razoável de qualquer maneira. Se você quiser melhor do que adivinhação, e não está na documentação da APC, talvez seja melhor dar uma olhada no código-fonte. Muitas vezes é a maneira mais fácil de responder a essas perguntas, e você aprenderá muito adotando essa abordagem.

    
por 15.06.2014 / 13:27