运行时配置

这些函数的行为受 php.ini 中的设置影响。

Memcached 配置选项
名称 默认值 可更改 变更日志
memcached.sess_locking On INI_ALL 自 memcached 0.1.0 起可用。
memcached.sess_consistent_hash On INI_ALL 自 memcached 2.1.0 起可用。自 memcached 3.0.0 起默认值为 On
memcached.sess_binary Off INI_ALL 自 memcached 2.0.0 起可用。自 memcached 3.0.0 起被 memcached.sess_binary_protocol 替换。
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 3.0.0 起被 memcached.sess_remove_failed_servers 替换。
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_ALL 自 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 起可用。自 memcached 3.1.0 起默认值为 150(之前为 2000)。
memcached.sess_lock_wait_min 150 INI_ALL 自 memcached 3.0.0 起可用。自 memcached 3.1.0 起默认值为 150(之前为 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 起可用。自 memcached 3.2.0 起默认值为 0(之前为 2)。

以下是配置指令的简短说明。

memcached.sess_locking 布尔值

使用会话锁定。有效值为:OnOff,默认值为 On

memcached.sess_consistent_hash 布尔值

如果设置为 On,则一致性哈希(libketama)用于会话处理。使用一致性哈希时,可以添加或删除缓存节点,而不会过多地影响现有键。默认值为 On

memcached.sess_binary 布尔值

使用 memcached 会话二进制模式。Libmemcached 复制品仅在启用二进制模式时才有效。默认值为 Off

memcached.sess_lock_wait 整数

会话自旋锁重试等待时间(以微秒为单位)。设置此值时请谨慎。有效值为整数,其中 0 被解释为默认值。负值会导致锁定减少为尝试锁定。默认值为 150000

memcached.sess_prefix 字符串

Memcached 会话键前缀。有效值为长度小于 219 字节的字符串。默认值为 memc.sess.key

memcached.sess_number_of_replicas 整数

将数据写入多个 memcached 服务器。正如 libmemcached 所称,这是“穷人版 HA”。如果此值大于 0 且 sess_remove_failed_servers 在 memcached 服务器出现故障时启用,则会话将继续从复制品中获取。但是,如果出现故障的 memcache 服务器再次可用,它将从那里读取会话,而该会话可能包含旧数据或根本没有数据。默认值为 0

memcached.sess_randomize_replica_read 布尔值

Memcached 会话复制品读取随机化。

memcached.sess_remove_failed 整数

允许自动移除出现故障的 memcached 服务器。

memcached.compression_type 字符串

设置压缩类型,有效值为:fastlzzlib。默认值为 fastlz

memcached.compression_factor 浮点数

压缩因子。仅当压缩因子(节省)超过设置的限制时,才存储压缩值。如果满足以下条件,则存储压缩值:plain_len > comp_len * factor。默认值为 1.3(节省 23% 的空间)。

memcached.compression_threshold 整数

压缩阈值。不要压缩低于此阈值的序列化值。默认值为 2000 字节。

memcached.serializer 字符串

为新的 memcached 对象设置默认序列化器。有效值为:phpigbinaryjsonjson_arraymsgpack

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,如果可用,则为 msgpack,否则为 php

memcached.use_sasl 布尔值

对连接使用 SASL 身份验证。有效值为:OnOff。默认值为 Off

memcached.default_binary_protocol 布尔值

为新连接设置默认的 memcached 协议。(要配置会话使用的 memcached 协议,请改用 memcached.sess_binary_protocol。)如果设置为 On,则默认情况下使用 memcached 二进制协议。如果设置为 Off,则使用 memcached 文本协议。默认值为 Off

memcached.default_connect_timeout 整数

为新连接设置默认的 memcached 连接超时时间。(要配置会话的 memcached 连接超时时间,请改用 memcached.sess_connect_timeout。)在非阻塞模式下,这会更改超时值的。在套接字连接期间(以毫秒为单位)。指定 -1 表示无限超时。指定 0 表示使用 memcached 库的默认连接超时时间。默认值为 0

memcached.default_consistent_hash 布尔值

为新连接设置一致性哈希的默认值。(要配置会话连接的一致性哈希,请改用 memcached.sess_consistent_hash。)如果设置为 On,则一致性哈希(libketama)用于会话处理。使用一致性哈希时,可以添加或删除缓存节点,而不会过多地影响现有键。默认值为 Off

memcached.sess_binary_protocol 布尔值

对 memcached 会话使用 memcached 二进制协议,而不是文本协议。Libmemcached 复制品仅在启用二进制模式时才有效。但是,某些代理(如 twemproxy)仅在禁用二进制协议时才有效。自 libmemcached 1.0.18 起默认值为 On。在 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,则使用一致哈希(libketama)进行会话处理。如果设置为 ketama_weighted,则使用加权一致哈希(libketama)进行会话处理。默认值为 ketama。在 php-memcached 3.0 之前,默认值为 ketama_weighted

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,之后任何进一步的重试将花费 memcached.sess_lock_wait_max 秒。默认值为 150

memcached.sess_persistent bool

是否在脚本执行结束后重复使用与 session.save_path 值对应的 memcached 连接。如果某些设置(例如 SASL 设置、sess_binary_protocol)在请求之间会被覆盖,请不要使用此设置。默认值为 Off

memcached.sess_remove_failed_servers bool

允许自动移除失败的 memcached 服务器。默认值为 Off

注意: 在早期版本的 php-memcached 中,此设置称为 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 操作在多服务器环境中所需的服务器上失败时,此机制允许透明地故障转移到辅助服务器。默认值为 2

添加注释

用户贡献注释 3 个注释

senz
10 年前
如果您想知道为什么您的会话在 1440 秒后被“杀死”,请查看 session.gc_maxlifetime。根据 memcache 协议规则,它的值用于 memcached 过期字段。另外,不要忘记 cookie 过期时间。
Piotr Gabryjeluk
6 年前
显然在 3.0.3 版本中,memcached.sess_binary_protocol 的默认值为 TRUE。另请注意键是 memcached.sess_binary_protocol,而不是 memcached.sess。

如果您想通过 twemproxy 将会话保存到 memcached,则需要将 memcached.sess_binary_protocol 设置为 FALSE。
adolfoabegg at gmail dot com
12 年前
您可以在这里获取 memcached.ini 配置文件可能选项的列表
https://github.com/php-memcached-dev/php-memcached/blob/master/memcached.ini
To Top