如果您想知道为什么您的会话在 1440 秒后被“杀死”,请查看 session.gc_maxlifetime。根据 memcache 协议规则,它的值用于 memcached 过期字段。另外,不要忘记 cookie 过期时间。
这些函数的行为受 php.ini 中的设置影响。
名称 | 默认值 | 可更改 | 变更日志 |
---|---|---|---|
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
布尔值使用会话锁定。有效值为:On
、Off
,默认值为 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
字符串设置压缩类型,有效值为:fastlz
、zlib
。默认值为 fastlz
。
memcached.compression_factor
浮点数压缩因子。仅当压缩因子(节省)超过设置的限制时,才存储压缩值。如果满足以下条件,则存储压缩值:plain_len > comp_len * factor
。默认值为 1.3
(节省 23% 的空间)。
memcached.compression_threshold
整数压缩阈值。不要压缩低于此阈值的序列化值。默认值为 2000
字节。
memcached.serializer
字符串为新的 memcached 对象设置默认序列化器。有效值为:php
、igbinary
、json
、json_array
、msgpack
。
标准 PHP JSON 编码。此序列化器速度快且紧凑,但仅适用于 UTF-8 编码的数据,并且没有完全实现序列化。请参阅 JSON 扩展。自 memcached 0.2.0 起可用。
与 json
相同,但解码为数组。自 memcached 2.0.0 起可用。
标准 PHP 序列化器。
二进制序列化器。自 memcached 0.1.4 起可用。
跨语言二进制序列化器。自 memcached 2.2.0 起可用。
如果可用,默认值为 igbinary
,如果可用,则为 msgpack
,否则为 php
。
memcached.use_sasl
布尔值对连接使用 SASL 身份验证。有效值为:On
、Off
。默认值为 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
intmemcached 连接超时值。在非阻塞模式下,此值会更改套接字连接过程中的超时时间(以毫秒计)。指定 -1
表示无限超时。
memcached.sess_consistent_hash_type
stringMemcached 会话一致哈希类型。如果设置为 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
。
如果您想知道为什么您的会话在 1440 秒后被“杀死”,请查看 session.gc_maxlifetime。根据 memcache 协议规则,它的值用于 memcached 过期字段。另外,不要忘记 cookie 过期时间。
显然在 3.0.3 版本中,memcached.sess_binary_protocol 的默认值为 TRUE。另请注意键是 memcached.sess_binary_protocol,而不是 memcached.sess。
如果您想通过 twemproxy 将会话保存到 memcached,则需要将 memcached.sess_binary_protocol 设置为 FALSE。
您可以在这里获取 memcached.ini 配置文件可能选项的列表
https://github.com/php-memcached-dev/php-memcached/blob/master/memcached.ini