PHP Conference Japan 2024

运行时配置

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

Memcached 配置选项
名称 默认值 可更改 变更日志
memcached.sess_locking 开启 INI_ALL 自 memcached 0.1.0 起可用。
memcached.sess_consistent_hash 开启 INI_ALL 自 memcached 2.1.0 起可用。自 memcached 3.0.0 起默认值为 开启
memcached.sess_binary 关闭 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 关闭 INI_ALL 自 memcached 2.1.0 起可用。
memcached.sess_remove_failed 开启 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 关闭 INI_ALL 自 memcached 2.2.0 起可用。自 memcached 3.0.0 起移除。
memcached.default_binary_protocol 关闭 INI_ALL 自 memcached 3.0.0 起可用。
memcached.default_connect_timeout 0 INI_ALL 自 memcached 3.0.0 起可用。
memcached.default_consistent_hash 关闭 INI_ALL 自 memcached 3.0.0 起可用。
memcached.sess_binary_protocol 开启 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 关闭 INI_ALL 自 memcached 3.0.0 起可用。
memcached.sess_remove_failed_servers 关闭 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 INI_ALL 自 memcached 2.2.0 起可用。
memcached.sess_sasl_username 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 布尔值

使用会话锁定。有效值:开启关闭,默认值为 开启

memcached.sess_consistent_hash 布尔值

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

memcached.sess_binary 布尔值

使用 memcached 会话二进制模式。只有在启用二进制模式的情况下,Libmemcached 副本才能工作。默认值为 关闭

memcached.sess_lock_wait 整数

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

memcached.sess_prefix 字符串

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

memcached.sess_number_of_replicas 整数

将数据写入多个额外的 Memcached 服务器。正如 libmemcached 所称,这是“穷人的 HA”。如果此值为正数且在 memcached 服务器发生故障时启用了 sess_remove_failed_servers,则会话将继续可从副本中获取。但是,如果失败的 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 身份验证。有效值:开启关闭。默认值为 关闭

memcached.default_binary_protocol 布尔值

设置新连接的默认 Memcached 协议。(要配置会话使用的连接的 Memcached 协议,请改用 memcached.sess_binary_protocol。)如果设置为 开启,则默认使用 Memcached 二进制协议。如果设置为 关闭,则使用 Memcached 文本协议。默认值为 关闭

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 整型

memcached 连接超时值。在非阻塞模式下,这会更改套接字连接期间的超时值(以毫秒为单位)。指定 -1 表示无限超时。

memcached.sess_consistent_hash_type 字符串

Memcached 会话一致性哈希类型。如果设置为 ketama,则会话处理将使用一致性哈希(libketama)。如果设置为 ketama_weighted,则会话处理将使用加权一致性哈希(libketama)。默认值为 ketama。在 php-memcached 3.0 之前,默认值为 ketama_weighted

memcached.sess_lock_expire 整型

锁在释放自身之前的时间(以秒为单位)。设置为 0 将导致使用默认行为,即使用 PHP 的 max_execution_time。默认值为 0

memcached.sess_lock_retries 整型

重试锁定会话锁的次数,不包括第一次尝试。默认值为 5

memcached.sess_lock_wait_max 整型

会话锁尝试之间等待的最大时间(以毫秒为单位)。默认值为 150

memcached.sess_lock_wait_min 整型

会话锁尝试之间等待的最小时间(以毫秒为单位)。此值在每次锁重试时加倍,直到达到 memcached.sess_lock_wait_max,之后任何进一步的重试都将花费 memcached.sess_lock_wait_max 秒。默认值为 150

memcached.sess_persistent 布尔型

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

memcached.sess_remove_failed_servers 布尔型

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

注意: 在早期版本的 php-memcached 中,此设置称为 memcached.sess_remove_failed

memcached.sess_server_failure_limit 整型

将此值设置为启用服务器,在配置的连续连接失败次数后将其删除。默认值为 0

memcached.sess_sasl_password 字符串

会话 SASL 密码。需要同时设置用户名和密码才能启用 SASL。

memcached.sess_sasl_username 字符串

会话 SASL 用户名。需要同时设置用户名和密码才能启用 SASL。

memcached.store_retry_count 整型

失败的存储命令的重试次数。当在多服务器环境中所需的服务器上的 set/increment/decrement/setMulti 操作失败时,此机制允许透明地故障转移到辅助服务器。默认值为 2

添加注释

用户贡献的笔记 3 个笔记

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

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