gpt4 book ai didi

基于 PHP Memcache(d) 的 session : Should garbage collection be disabled?

转载 作者:可可西里 更新时间:2023-10-31 22:13:16 25 4
gpt4 key购买 nike

当使用 pecl memcached(或者我猜是 memcache..)扩展时,是否应该通过将概率设置为 0 来禁用 php 的 session 垃圾收集(例如:session.gc_probability/session.gc_divisor)?

由于以下原因,这似乎是合乎逻辑的:

A) session 过期时间很可能只是通过在存储的 key 上设置过期时间来简单地存储。 EG:每个 session 都有其到期 ttl,并在到期时被 memcached 简单地清除。

B) 要清除尚未被 memcached 本身清除的现有 session ,memcached 扩展必须对存储在 memcache 守护进程中的所有数据进行完整转储,检查每个键以查看键是否匹配定义的模式,然后检查添加 key 的时间,最后根据需要删除。由于以下原因,这不太可能:1) 据我所知,无法确定何时将 key 添加到内存缓存。只有到期的时候。 2) 转储 + 解析对 memcache 实例来说会非常繁重。

再一次,memcache(d) pecl 扩展很可能只是禁用了 php 的 session 垃圾收集?

谢谢。

最佳答案

PHP ini 设置 session.gc_maxlifetime 定义 session 条目的到期时间。如果禁用此选项,您的 session 将永远处于事件状态。

如果您查看 Memcached 源代码,很容易发现该行为(即使您不了解 C):https://github.com/php-memcached-dev/php-memcached/blob/e781e169871fd4f14f844ce3e01860e84ec28831/php_memcached_session.c#L325-L327

过期时间默认设置为 0,仅当 PHP ini 设置 session.gc_maxlifetime 设置为大于 0 的值时才设置。仅仅因为该设置包含一个 gc 并没有说这与 PHP session 垃圾回收有关。 Memcached 扩展只是解释这个选项,因为它可以利用它。如果您使用 Memcached,则不需要 PHP 垃圾收集,因为它会自行清理并且扩展本身会禁用垃圾收集。

但是你还是要设置设置!

关于基于 PHP Memcache(d) 的 session : Should garbage collection be disabled?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13633433/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com