Назад | Перейти на главную страницу

Как работает истечение срока разделяемой памяти PHP APC?

Я использую APC и вижу, что у меня все еще есть 25MB свободной памяти.

Однако в Cache full count, Я вижу, у меня есть 8 уже.

Итак, почему это происходит? И если я понимаю: APC не является кешем LRU, так почему мне все еще нужно освобождать память, когда я достиг полного счета?

Независимо от того, что именно представляет собой алгоритм аннулирования кеша, вероятно, будет некоторый целевой объем свободного пространства или, по крайней мере, ожидается, что пространство будет освобождаться при каждом запуске процедуры аннулирования. Таким образом, вы должны ожидать, что почти все время будет свободное пространство.

Честно говоря, мне трудно понять, что именно вы видите и о чем спрашиваете. Вы можете получить дополнительную помощь, если перефразируете свой вопрос и добавите детали. Если конкретные объемы памяти, о которых вы говорите, важны для ответа на ваш вопрос, вам следует дать немного больше контекста о том, сколько общего пространства памяти вы выделили в целом, и, возможно, о том, как свободное пространство изменяется со временем.

Мне кажется, что 25 МБ свободного места мало.

Я думаю, что алгоритм заключается в том, что когда кеш заполнен, APC выполняет полный проход по содержимому кеша, идентифицируя все просроченное содержимое. Я не уверен, что он делает, если ничего не просрочено. Предположительно Cache_full_count - это подсчет количества таких проходов. В любом случае кажется разумным предположением. Если вы хотите чего-то большего, чем догадки, и этого нет в документации APC, возможно, вам лучше взглянуть на исходный код. Часто это самый простой способ ответить на такие вопросы, и вы многому научитесь, применяя этот подход.