2024 年 PHP Conference Japan

執行時期設定

這些函式的行為會受到 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 開始,預設值為 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)

使用工作階段鎖定。有效值:OnOff,預設值為 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)

設定壓縮類型,有效值為:fastlzzlib。預設值為 fastlz

memcached.compression_factor 浮點數 (float)

壓縮係數。僅當壓縮係數(節省空間)超過設定限制時,才儲存壓縮值。儲存壓縮值的條件:plain_len > comp_len * factor。預設值為 1.3(節省 23% 的空間)。

memcached.compression_threshold 整數

壓縮閾值。序列化值大小低於此閾值時不進行壓縮。預設值為 2000 位元組。

memcached.serializer 字串

設定新的 memcached 物件的預設序列化器。有效值為:phpigbinaryjsonjson_arraymsgpack

json

標準 PHP JSON 編碼。此序列化器速度快且精簡,但僅適用於 UTF-8 編碼的資料,並且未完全實現序列化。詳見 JSON extension。從 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 不可用但 msgpack 可用則為 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
7 年前
顯然在 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