CakeFest 2024: The Official CakePHP Conference

Настройка во время выполнения

Поведение этих функций зависит от установок в php.ini.

В таблице представлен список конфигурационных параметров модуля WinCache:

Конфигурационные параметры WinCache
Имя По умолчанию Минимум Максимум Место изменения Список изменений
wincache.fcenabled "1" "0" "1" INI_ALL Доступно с WinCache 1.0.0
wincache.fcenabledfilter "NULL" "NULL" "NULL" INI_SYSTEM Доступно с WinCache 1.0.0
wincache.fcachesize "24" "5" "255" INI_SYSTEM Доступно с WinCache 1.0.0
wincache.fcndetect "1" "0" "1" INI_SYSTEM Доступно с WinCache 1.1.0
wincache.maxfilesize "256" "10" "2048" INI_SYSTEM Доступно с WinCache 1.0.0
wincache.ocenabled "1" "0" "1" INI_ALL Доступно с WinCache 1.0.0. Удалено в 2.0.0.0
wincache.ocenabledfilter "NULL" "NULL" "NULL" INI_SYSTEM Доступно с WinCache 1.0.0. Удалено в 2.0.0.0
wincache.ocachesize "96" "15" "255" INI_SYSTEM Доступно с WinCache 1.0.0. Удалено в 2.0.0.0
wincache.filecount "4096" "1024" "16384" INI_SYSTEM Доступно с WinCache 1.0.0
wincache.chkinterval "30" "0" "300" INI_SYSTEM Доступно с WinCache 1.0.0
wincache.ttlmax "1200" "0" "7200" INI_SYSTEM Доступно с WinCache 1.0.0
wincache.enablecli 0 0 1 INI_SYSTEM Доступно с WinCache 1.0.0
wincache.ignorelist NULL NULL NULL INI_ALL Доступно с WinCache 1.0.0
wincache.namesalt NULL NULL NULL INI_SYSTEM Доступно с WinCache 1.0.0
wincache.ucenabled 1 0 1 INI_SYSTEM Доступно с WinCache 1.1.0
wincache.ucachesize 8 5 85 INI_SYSTEM Доступно с WinCache 1.1.0
wincache.scachesize 8 5 85 INI_SYSTEM Доступно с WinCache 1.1.0
wincache.rerouteini NULL NULL NULL INI_SYSTEM Доступно с WinCache 1.2.0. Удалено в 1.3.7
wincache.reroute_enabled 1 0 1 INI_SYSTEM|INI_PERDIR Доступно с WinCache 1.3.7
wincache.srwlocks 1 0 1 INI_SYSTEM Доступно с WinCache 1.3.6.3. Удалено в 2.0.0.0
wincache.filemapdir NULL NULL NULL INI_SYSTEM Доступно с WinCache 1.3.7.4
Дополнительная информация и описания режимов INI_* даны в разделе «Места установки параметров конфигурации».

Краткое разъяснение конфигурационных директив.

wincache.fcenabled bool
Включает/отключает файловое кеширование.
wincache.fcenabledfilter string
Определяет список идентификаторов IIS веб-серверов, разделённых запятой, для которых должно быть разрешено/запрещено файловое кеширование. Эта настройка работает в паре с wincache.fcenabled: если wincache.fcenabled установлено в 1, то для серверов, перечисленных в wincache.fcenabledfilter файловое кеширование будет отключено; если wincache.fcenabled установлено как 0, то для серверов, перечисленных в wincache.fcenabledfilter файловое кеширование будет включено.
wincache.fcachesize int
Определяет максимальный размер памяти (в мегабайтах) для файлового кеша. Когда размер всех закешированных файлов превысит это значение, из кеша будут удалены самые устаревшие файлы.
wincache.fcndetect bool
Включает/отключает функциональность оповещения об изменении файла. Если функционал оповещения об изменениях файла поддерживается, то он может быть использован для обновления кеша опкодов и файлового кеша при получении соответствующих оповещений. Если подобный механизм не поддерживается, например, при использовании сетевых папок, wincache будет самостоятельно проверять файлы на предмет изменения через заданные в настройке wincache.chkinterval интервалы времени.
wincache.maxfilesize int
Определяет максимальный размер одного файла (в килобайтах) для файлового кеша. Если размер файла превышает заданное значение, то он не будет закеширован. Данная настройка применяется только к файловому кешу.
wincache.ocenabled bool
Внимание

Эта опция была УДАЛЕНА в версии 2.0.0.0

Включает/отключает кеширование опкодов
wincache.ocenabledfilter string
Внимание

Эта опция была УДАЛЕНА в версии 2.0.0.0

Определяет список идентификаторов IIS веб-серверов, разделённых запятой, для которых должно быть разрешено/запрещено кеширование опкодов. Эта настройка работает в паре с wincache.ocenabled: если wincache.ocenabled установлено в 1, то для серверов, перечисленных в wincache.ocenabledfilter файловое кеширование будет отключено; если wincache.ocenabled установлено как 0, то для серверов, перечисленных в wincache.ocenabledfilter файловое кеширование будет разрешено.
wincache.ocachesize int
Внимание

Эта опция была УДАЛЕНА в версии 2.0.0.0

Определяет максимальный размер памяти (в мегабайтах) для кеша опкодов. Когда размер всех закешированных опкодов превысит это значение, из кеша будут удалены самые устаревшие из них. Обратите внимание, что кеш опкодов должен быть как минимум в 3 раза больше файлового кеша. Если это не так, то размер кеша опкодов будет автоматически увеличен.
wincache.filecount int
Определяет, сколько примерно файлов будет закешировано модулем, чтобы при старте был выделен соответствующий кусок памяти. Если количество файлов превысит заданное значение, то WinCache произведёт переаллокацию памяти.
wincache.chkinterval int
Определяет насколько часто (в секундах) модуль будет проверять файлы на предмет их изменения для обновления кешей. Значение 0 отключает данный функционал. Изменения файлов не будут отражены в кеше до тех пор, пока закешированная запись не будет удалена из кеша сборщиком устаревших записей, либо пока не будет переработан пул приложений IIS, либо не будет вызвана функция wincache_refresh_if_changed.
wincache.ttlmax int
Определяет максимальное время (в секундах) невостребованности для записи в кеше. Установка в 0 отключает процесс удаления устаревших записей, что приведёт к тому, что запись будет лежать в кеше пока сервер IIS не будет остановлен.
wincache.enablecli bool
Определяет, разрешено ли кеширование при работе PHP из командной строки (CLI).
wincache.ignorelist string

Определяет список файлов, которые не нужно кешировать. Указываются только имена файлов. Символ разделитель - вертикальная черта "|".

Пример #1 Пример использования wincache.ignorelist

wincache.ignorelist = "index.php|misc.php|admin.php"

wincache.namesalt string
Определяет строку, которая будет использоваться при именовании объектов, помещаемых в разделяемую память. Это необходимо для предотвращения коллизий, когда несколько процессов работают с разделяемой памятью. Длина данной строки не должна превышать 8 символов.
wincache.ucenabled bool
Включает/отключает пользовательский кеш.
wincache.ucachesize int
Определяет максимальный размер памяти (в мегабайтах) для пользовательского кеша. Когда размер всех закешированных переменных превысит это значение, из кеша будут удалены самые устаревшие переменные.
wincache.scachesize int
Определяет максимальный размер памяти (в мегабайтах) для сессионного кеша. Когда размер всех закешированных данных превысит это значение, из кеша будут удалены самые устаревшие данные.
wincache.rerouteini string
Внимание

Эта опция была УДАЛЕНА в версии 1.3.7. Начиная с 1.3.7. вместо неё используйте wincache.reroute_enabled.

Задаёт абсолютный или относительный путь к reroute.ini, который содержит список функций PHP, чья реализация должна быть подменена реализацией из модуля WinCache. Если задан относительный путь, то он будет разрешаться относительно местоположения файла php-cgi.exe.
wincache.reroute_enabled bool
Включает/отключает перенаправление некоторых функций файлового ввода/вывода для работы через файловый кеш.
wincache.srwlocks bool
Внимание

Эта опция была УДАЛЕНА в версии 2.0.0.0

Включает/отключает использование разделяемых блокировок чтения/записи. Выключение полезно при отладке ситуаций взаимных блокировок в WinCache.
wincache.filemapdir string
Задаёт абсолютный путь к директории, где WinCache будет держать временные файлы для сегментов разделяемой памяти. Эта директория должна располагаться на локальной машине и ни в коем случае не на сетевой файловой системе. Если директория не указана, то WinCache будет использовать Windows System Page File.

add a note

User Contributed Notes 2 notes

up
2
ericsten at php dot net
9 years ago
[Editor's note: fixed typo]

Just a quick note about something I've discovered through debugging a recent WinCache issue:

If you change the wincache.scachesize value, you MUST shutdown all php-cgi.exe instances and manually delete the wincache_session_*.tmp file.

The wincache_session_*.tmp file will in the directory specified by session.save_path in the php.ini file.

An example session file name would look like: wincache_session_1_565779.tmp

If you don't delete this file, you will run into corruption in cross-process shared memory segments for the WinCache session handler. These will show up as 500 errors from your IIS server.

Thx!

--E.
up
0
software journalist
4 years ago
wincache.php showed in Session Cache Overview that the Available Memory was returning NAN B.

A Google search returned nothing specific to this.

Stopping the App Pool and Deleting the *session*.tmp file in the windows temp directory solved this issue. (Thanks to previous noter)
To Top