PHPCon Poland 2024

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

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

Опции настройки Memcached
Имя По умолчанию Место изменения Список изменений
memcached.sess_locking On INI_ALL Доступно с memcached 0.1.0.
memcached.sess_consistent_hash On INI_ALL Доступно с memcached 2.1.0. Значение по умолчанию — On, начиная с memcached 3.0.0.
memcached.sess_binary Off INI_ALL Доступно с memcached 2.0.0. Заменено на memcached.sess_binary_protocol в memcached 3.0.0.
memcached.sess_lock_wait 150000 INI_ALL Доступно с memcached 0.1.0. Удалено в memcached 3.0.0.
memcached.sess_prefix memc.sess.key. INI_ALL Доступно с memcached 0.1.0.
memcached.sess_number_of_replicas 0 INI_ALL Доступно с memcached 2.1.0.
memcached.sess_randomize_replica_read Off INI_ALL Доступно с memcached 2.1.0.
memcached.sess_remove_failed On INI_ALL Доступно с memcached 2.1.0. Заменено на memcached.sess_remove_failed_servers в memcached 3.0.0.
memcached.compression_type fastlz INI_ALL Доступно с memcached 0.1.0.
memcached.compression_factor 1.3 INI_ALL Доступно с memcached 0.1.0.
memcached.compression_threshold 2000 INI_ALL Доступно с memcached 0.1.0.
memcached.serializer igbinary INI_ALL Доступно с memcached 0.1.0.
memcached.use_sasl Off INI_SYSTEM Доступно с memcached 2.2.0. Удалено в memcached 3.0.0.
memcached.default_binary_protocol Off INI_ALL Доступно с memcached 3.0.0.
memcached.default_connect_timeout 0 INI_ALL Доступно с memcached 3.0.0.
memcached.default_consistent_hash Off INI_ALL Доступно с memcached 3.0.0.
memcached.sess_binary_protocol On INI_ALL Доступно с memcached 3.0.0. Заменено на memcached.sess_binary.
memcached.sess_connect_timeout 1000 INI_ALL Доступно с memcached 2.2.0.
memcached.sess_consistent_hash_type ketama INI_ALL Доступно с memcached 3.1.0.
memcached.sess_lock_expire 0 INI_ALL Доступно с memcached 2.2.0.
memcached.sess_lock_retries 5 INI_ALL Доступно с memcached 3.0.0.
memcached.sess_lock_wait_max 150 INI_ALL Доступно с memcached 3.0.0. Значение по умолчанию 150 с memcached 3.1.0 (предыдущее значение 2000).
memcached.sess_lock_wait_min 150 INI_ALL Доступно с memcached 3.0.0. Значение по умолчанию 150 с memcached 3.1.0 (предыдущее значение 1000).
memcached.sess_persistent Off INI_ALL Доступно с memcached 3.0.0.
memcached.sess_remove_failed_servers Off INI_ALL Доступно с memcached 3.0.0. Заменено на memcached.sess_remove_failed.
memcached.sess_server_failure_limit 0 INI_ALL Доступно с memcached 3.0.0.
memcached.sess_sasl_password null INI_ALL Доступно с memcached 2.2.0.
memcached.sess_sasl_username null INI_ALL Доступно с memcached 2.2.0.
memcached.store_retry_count 0 INI_ALL Доступно с memcached 2.2.0. Значение по умолчанию 0 с memcached 3.2.0 (предыдущее значение 2).

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

memcached.sess_locking bool

Использовать блокировку сессий. Допустимые значения: On, Off. По умолчанию — On.

memcached.sess_consistent_hash bool

Если установлено значение On, то для обработки сессий будет использовано согласованное хеширование (libketama). При использовании согласованного хеширования можно добавлять или удалять узлы кеширования без больших потерь кешированных ключей. По умолчанию — On.

memcached.sess_binary bool

Использовать бинарный режим сессии. Реплики модуля libmemcached работают только если включён этот режим. По умолчанию — Off.

memcached.sess_lock_wait int

Время ожидания повторной синхронизации сессии в микросекундах. При установке этого значения нужно быть осторожным. Допустимы целочисленные значения. Если установлено значене 0, то будет использовано значение по умолчанию. Отрицательные значения уменьшают блокировку попытки блокировки. По умолчанию — 150000.

memcached.sess_prefix string

Префикс ключа сессии. Строка длиной не более 219 байтов. По умолчанию — memc.sess.key.

memcached.sess_number_of_replicas int

Записывать данные на ряд дополнительных серверов memcached. Это «высокая доступность для бедняков», как её называет модуль libmemcached. Если это значение положительное и активирован режим sessions_remove_failed_servers, когда сервер memcached выходит из строя, сессия будет по-прежнему доступна из реплики. Однако, если отказавший сервер memcache снова становится доступным, он будет читать сессию оттуда, которая может иметь старые данные или вообще не иметь данных. По умолчанию — 0.

memcached.sess_randomize_replica_read bool

Случайное чтение реплики memcached сессией.

memcached.sess_remove_failed int

Разрешить автоматическое удаление недоступных серверов memcached.

memcached.compression_type string

Настройка типа сжатия, корректные значения: fastlz, zlib. По умолчанию — fastlz.

memcached.compression_factor float

Коэффициент сжатия. Хранить значения сжатыми только если коэффициент сжатия превышает заданный. Храним сжатым, если: plain_len > comp_len * factor. По умолчанию — 1.3 (экономия места 23 %).

memcached.compression_threshold int

Порог сжатия. Не сжимать сериализованные значения меньше указанного размера. По умолчанию 2000 байтов.

memcached.serializer string

Устанавливает сериализатор по умолчанию для новых объектов memcached. Допустимые значения: php, igbinary, json, json_array, msgpack.

json

Стандартное для PHP кодирование в формат JSON. Этот сериализатор быстрый и компактный, но работает только с данными в кодировке UTF-8, и не полностью реализует сериализацию. Подробнее об этом рассказано в описании модуля JSON. Доступно с memcached 0.2.0.

json_array

Тот же json, но декодируется в массивы. Доступно с memcached 2.0.0.

php

Стандартный сериализатор PHP.

igbinary

Бинарный сериализатор. Доступно с memcached 0.1.4

msgpack

Межъязыковой двоичный сериализатор. Доступно с memcached 2.2.0.

По умолчанию igbinary, если доступен, затем igbinary, если доступен, иначе PHP.

memcached.use_sasl bool

Использовать аутентификацию SASL при соединении. Допустимые значения: On, Off. По умолчанию — Off.

memcached.default_binary_protocol bool

Устанавливает протокол memcached по умолчанию для новых подключений. (Чтобы настроить протокол memcached для соединений, используемых сессиями, вместо нее используют директиву memcached.sess_binary_protocol.) Если установлено значение On, по умолчанию будет использован двоичный протокол memcached. Если установлено значение Off, будет использован текстовый протокол memcached. По умолчанию — Off.

memcached.default_connect_timeout int

Устанавливает время ожидания соединения memcached по умолчанию для новых соединений. (Чтобы настроить время ожидания соединения memcached для сессий, вместо этого используют memcached.sess_connect_timeout.) В неблокирующем режиме это изменяет значение времени ожидания во время подключения к сокету в миллисекундах. Указание -1 означает бесконечное время ожидания. Указание 0 означает использование времени ожидания соединения по умолчанию для библиотеки memcached. По умолчанию — 0.

memcached.default_consistent_hash bool

Устанавливает значение по умолчанию для согласованного хеширования для новых подключений. (Чтобы настроить согласованное хеширование для сессий, вместо этого используют memcached.sess_consistent_hash.) Если установлено значение On, для обработки сессии используется согласованное хеширование (libketama). Когда используется согласованное хеширование, можно добавлять или удалять узлы кеша, не беспокоясь о том, что существующие ключи по умолчанию отключены.

memcached.sess_binary_protocol bool

Использовать двоичный протокол memcached для сессий memcached (вместо текстового протокола). Реплики модуля libmemcached работают, только если включён двоичный режим. Однако некоторые прокси (например, twemproxy) будут работать, только если двоичный протокол отключён. По умолчанию — On с libmemcached 1.0.18 или новее. До libmemcached 1.0.18 значение по умолчанию Off.

Замечание: В более старых версиях php-memcached эта директива была выключена и называлась memcached.sess_binary.

memcached.sess_connect_timeout int

Значение времени ожидания соединения memcached. В неблокирующем режиме это изменяет значение времени ожидания во время соединения сокета в миллисекундах. Указание -1 означает бесконечное время ожидания.

memcached.sess_consistent_hash_type string

Тип согласованного хеширования сессии Memcached. Если установлено значение ketama (по умолчанию для php-memcached 3.x), для обработки сессии используется согласованное хеширование модуля libketama, если установлено значение ketama_weighted (по умолчанию для php-memcached 2.x), для обработки сессии используется взвешенное согласованное хеширование (модуль libketama). По умолчанию — ketama.

memcached.sess_lock_expire int

Время в секундах до того, как должна сработать блокировка. Установка значения 0 приводит к поведению по умолчанию — будет использована PHP-директива max_execution_time. По умолчанию — 0.

memcached.sess_lock_retries int

Количество попыток повторной блокировки блокировки сессии, не включая первую попытку. По умолчанию — 5.

memcached.sess_lock_wait_max int

Максимальное время ожидания в миллисекундах между попытками блокировки сессии. По умолчанию — 150.

memcached.sess_lock_wait_min int

Минимальное время ожидания в миллисекундах между попытками блокировки сессии. Это значение удваивается при каждой попытке блокировки до тех пор, пока не будет достигнуто значение, заданное директивой memcached.sess_lock_wait_max, очередные попытки будут занимать время достигнутого значения. По умолчанию — 150.

memcached.sess_persistent bool

Следует ли повторно использовать соединения memcached, соответствующие значению (значениям) директивы session.save_path после завершения выполнения скрипта. Эту директиву не используют, если определённые настройки (например, настройки SASL, sess_binary_protocol) будут переопределены между запросами. По умолчанию — Off.

memcached.sess_remove_failed_servers bool

Разрешить автоматическое удаление отказавшего сервера memcached. По умолчанию — Off.

Замечание: В предыдущих версиях эта директива называлась memcached.sess_remove_failed.

memcached.sess_server_failure_limit int

Установка большего, чем установленное по умолчанию, значения разрешит удаление сервера после заданного количества непрерывных сбоев подключения. По умолчанию — 0.

memcached.sess_sasl_password string

Пароль сессии SASL. Для включения SASL необходимо указать имя пользователя и пароль.

memcached.sess_sasl_username string

Имя пользователя сессии SASL. Для включения SASL необходимо указать имя пользователя и пароль.

memcached.store_retry_count int

Количество повторных попыток для неудачных команд сохранения. Этот механизм прозрачно переключает на вторичные серверы при сбое операций set/increment/decrement/setMulti на желаемом сервере в среде c множеством серверов. По умолчанию — 2.

add a note

User Contributed Notes 3 notes

up
5
senz
10 years ago
In case, you are wondering why your sessions are "killed" after 1440 seconds, take a look at session.gc_maxlifetime. It's value is used in memcached expiration field according to memcache protocol rules. Also, do not forget about cookie expiration time
up
1
Piotr Gabryjeluk
6 years ago
Apparently in version 3.0.3 the default for memcached.sess_binary_protocol in TRUE. Also note the key is memcached.sess_binary_protocol, not memcached.sess.

Setting memcached.sess_binary_protocol to FALSE is required if you want to save the session to memcached through twemproxy.
up
1
adolfoabegg at gmail dot com
12 years ago
you can get the list of the possible options for the memcached.ini configuration file here:
https://github.com/php-memcached-dev/php-memcached/blob/master/memcached.ini
To Top