如果您想知道為什麼您的工作階段在 1440 秒後被「終止」,請查看 session.gc_maxlifetime。根據 memcache 協議規則,它的值會用於 memcached 的到期欄位。此外,也不要忘記 cookie 的到期時間。
這些函式的行為會受到 php.ini 中設定的影響。
名稱 | 預設值 | 可變更性 | 版本變更紀錄 |
---|---|---|---|
memcached.sess_locking | 開啟 | INI_ALL |
從 memcached 0.1.0 開始可用。 |
memcached.sess_consistent_hash | 開啟 | INI_ALL |
從 memcached 2.1.0 開始可用。從 memcached 3.0.0 開始,預設值為 On 。 |
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 | 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
布林值 (bool)使用工作階段鎖定。有效值:On
、Off
,預設值為 On
。
memcached.sess_consistent_hash
布林值 (bool)如果設定為 On
,則會使用一致性雜湊 (libketama) 進行工作階段處理。使用一致性雜湊時,可以新增或移除快取節點,而不會過多地影響現有的鍵值。預設值為 On
。
memcached.sess_binary
布林值 (bool)使用 memcached 工作階段二進位模式。僅在啟用二進位模式時,Libmemcached 副本才會運作。預設值為 Off
。
memcached.sess_lock_wait
整數 (int)工作階段自旋鎖重試等待時間(微秒)。設定此值時請務必小心。有效值為整數,其中 0
表示預設值。負值會將鎖定降級為嘗試鎖定。預設值為 150000
。
memcached.sess_prefix
字串 (string)Memcached 工作階段鍵值前綴。有效值是小於 219 位元組的字串。預設值為 memc.sess.key
。
memcached.sess_number_of_replicas
整數 (int)將資料寫入到多個額外的 memcached 伺服器。這就是 libmemcached 所謂的「窮人的高可用性」。如果此值為正數,並且在 memcached 伺服器故障時啟用了 sess_remove_failed_servers
,則工作階段將繼續可從副本中取得。但是,如果故障的 memcached 伺服器再次可用,它將從該處讀取工作階段,這可能包含舊資料或根本沒有資料。預設值為 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
整數壓縮閾值。序列化值大小低於此閾值時不進行壓縮。預設值為 2000
位元組。
memcached.serializer
字串設定新的 memcached 物件的預設序列化器。有效值為:php
、igbinary
、json
、json_array
、msgpack
。
標準 PHP JSON 編碼。此序列化器速度快且精簡,但僅適用於 UTF-8 編碼的資料,並且未完全實現序列化。詳見 JSON extension。從 memcached 0.2.0 版本開始提供。
與 json
相同,但會解碼為陣列。從 memcached 2.0.0 版本開始提供。
標準 PHP 序列化器。
二進位序列化器。從 memcached 0.1.4 版本開始提供。
跨語言二進位序列化器。從 memcached 2.2.0 版本開始提供。
預設值為:如果可用則為 igbinary
,如果 igbinary
不可用但 msgpack
可用則為 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
整數 (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
。
如果您想知道為什麼您的工作階段在 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