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

Что на самом деле делает apc.mmap_file_mask?

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

Чтобы преодолеть это, я подумал об использовании разных apc.mmap_file_mask для каждого пользователя (они chrootted через php-fpm), поэтому «файл», созданный APC, не будет использоваться совместно, но будет личным для пользователя.

Конечно, я заметил, что ошибаюсь по нескольким причинам ... и самая большая из них - «Что на самом деле делает apc.mmap_file_mask?»: Я думал, что это похоже на указатель на область памяти, используемую APC , но я не уверен в этом.
И, конечно же, в пути, который я использовал (/tmp/apc.XXXXXX), нет файла: нет файла на машине / tmp и нет файла в chrooted-окружении (/ home / vhosts / 0001 / tmp) .
Итак, что на самом деле делает apc.mmap_file_mask?

Моя фактическая конфигурация:

apc.mmap_file_mask = /tmp/apc.XXXXXX
apc.num_files_hint = 2048
apc.max_file_size = 10M
apc.ttl = 7200

Я уже проверил, что происходит с phpinfo (), и он не переводит значение: он все равно дает мне /tmp/apc.XXXXXX (но apc.php говорит, что кеш был поражен, и у меня лучшие значения времени ... поэтому он работает).

Вы пробовали APC.php на активном веб-сервере? если вы используете SHM, а не MMAP, это может объяснить. Маска файла просто позволяет сохранить файл ap со случайными цифрами в соответствии с вашей спецификацией в определенном месте. Вы даже можете отправить его на / dev / zero согласно сообщению в блоге здесь http://www.nigeldunn.com/2011/05/02/unable-to-allocate-memory-pool/

Вот объяснение различных мест в памяти / файлах https://stackoverflow.com/questions/904581/shmem-vs-tmpfs-vs-mmap

Я не совсем уверен в своем ответе, но вполне вероятно, что вы используете SHM, и, следовательно, параметр для маски mmap может не применяться.

попробуйте это после загрузки APC.php

ls /dev/shm

Если это кому-то полезно, файлы удаляются почти сразу, поэтому вы не можете увидеть их через ls (если только вы не запустили ls в нужную секунду). Если вы хотите, чтобы файлы были созданы и удалены APC в каталоге, указанном apc.mmap_file_mask, вы можете использовать inotify-tools для отслеживания активности файловой системы в этом каталоге.

Просто установите его, перейдите в каталог apc.mmap_file_mask и выполните следующую команду. Если другие процессы используют этот каталог для других целей (например, в случае / tmp), вы можете направить вывод в grep и найти часть имени файла, которая соответствует вашему параметру mmap_file_mask, например, apc.

/usr/bin/inotifywait -mr -e attrib,create,delete,modify,move --format '|%w/%f| %e %T' --timefmt '%Y-%m-%d-%H-%M-%S' .

#example output:

Setting up watches.  Beware: since -r was given, this may take a while!
Watches established.
|.//apc.wi3mjq| CREATE 2014-07-09-20-59-01
|.//apc.wi3mjq| MODIFY 2014-07-09-20-59-01
|.//apc.wi3mjq| DELETE 2014-07-09-20-59-01
|.//apc.EQs3Up| CREATE 2014-07-09-20-59-01
|.//apc.EQs3Up| MODIFY 2014-07-09-20-59-01
|.//apc.EQs3Up| DELETE 2014-07-09-20-59-01
|.//apc.IpNU5o| CREATE 2014-07-09-20-59-01
|.//apc.IpNU5o| MODIFY 2014-07-09-20-59-01
|.//apc.QnNU5o| CREATE 2014-07-09-20-59-01
|.//apc.QnNU5o| MODIFY 2014-07-09-20-59-01
|.//apc.QnNU5o| DELETE 2014-07-09-20-59-01

В качестве примечания, этот трюк работает и для отслеживания активности временных таблиц в MySQL tmpdir.