4

pecl memcached(または私が推測するmemcache ..)拡張機能を使用する場合、確率を0に設定して、phpのセッションガベージコレクション(例:session.gc_probability / session.gc_divisor)を無効にする必要がありますか?

これは、次の理由で論理的である可能性があるため、継ぎ目があります。

A)セッションの有効期限は、保存されているキーに有効期限を設定することで簡単に保存される可能性があります。EG:各セッションには有効期限ttlが与えられ、有効期限が切れるとmemcachedによって単純にパージされます。

B)memcached自体によってパージされていない既存のセッションをフラッシュするには、memcached拡張機能は、memcacheデーモンに格納されているすべてのデータの完全なダンプを実行する必要があります。各キーをチェックして、キーが定義されたパターンと一致するかどうかを確認します。 、キーがいつ追加されたかを確認し、必要に応じて最後に削除します。次の理由により、これは起こりそうにありません。1)私が知る限り、キーがmemcacheにいつ追加されたかはわかりません。有効期限が切れたときのみ。2)ダンプ+解析は、memcacheインスタンスで非常に重いものになります。

繰り返しになりますが、memcache(d)pecl拡張機能がphpのセッションガベージコレクションを単に無効にする可能性は十分にありますか?

ありがとう。

4

1 に答える 1

8

PHP ini 設定session.gc_maxlifetimeは、セッション エントリの有効期限を定義します。このオプションを無効にすると、セッションは永久にアクティブになります。

Memcached のソースを見れば、その動作を簡単に見つけることができます (C を理解していなくても) : c#L325-L327

有効期限はデフォルトで 0 に設定されており、PHP の ini 設定session.gc_maxlifetimeが 0 より大きい値に設定されている場合にのみ設定されます。設定に a が含まれてgcいるからといって、これが PHP のセッション ガベージ コレクションと関係があるとは限りません。Memcached 拡張機能は、このオプションを利用できるものとして単純に解釈します。Memcached を使用する場合、PHP ガベージ コレクションは必要ありません。Memcached は自動的にクリーンアップし、ガベージ コレクションは拡張機能自体によって無効にされます。

ただし、設定を行う必要があります。

于 2013-06-16T20:03:33.253 に答える