Что делает apc.preload_path в настройках APC? - PullRequest
2 голосов
/ 04 августа 2011

Просто любопытно.Это недокументировано в руководстве здесь .

Может быть, кто-то, кто знаком с исходным кодом APC, может объяснить?

Ответы [ 2 ]

4 голосов
/ 04 августа 2011

Указывает каталог, из которого APC загружает данные кэша при запуске.В больших настройках (например, 100+ серверов) это позволит вам отказаться от компиляции php-файлов.Вы также можете предоставить свои собственные компиляции, если вы чем-то умнее, чем APC и php-компилятор, или другими видами данных по умолчанию.

Помимо этого единственного случая , он не используется.Если у вас нет одной из проблем, описанных выше, вы не должны устанавливать ее.

1 голос
/ 17 августа 2012

В момент написания эта опция не работает из-за ошибки в исходном коде APC, которая не позволяет вам правильно предварительно загрузить кэш.

Внутри 'main_apc.c' в методе, называемом 'static int apc_load_data(const char *data_file TSRMLS_DC) ', длина ключа значения, которое нужно сохранить, определяется следующей строкой:

key_len = strlen(key);

Если я прав, это только длина самой строки без нуля.terminator Однако, «_apc_store», кажется, хочет длину строки ключа, включая терминатор.Если я изменю строку выше на:

key_len = strlen(key)+1;

, тогда функция предварительной загрузки работает как положено.

Вы также можете заметить, что при просмотре записей кэша пользователя отсутствует 1 символ apc.php,Но если вы попытаетесь использовать это в качестве ключа, то APC не вернет содержимое, чтобы оно не работало в качестве обходного пути.

...