寻找有关PHP会话垃圾收集如何工作的细节

前端之家收集整理的这篇文章主要介绍了寻找有关PHP会话垃圾收集如何工作的细节前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
PHP有几个会话设置,可以控制垃圾收集(即删除过期的会话)的可能性.

我的问题是:这个概率是否适用于任何给定Apache服务器上所有虚拟主机上运行的所有Apache线程?

例如:

>如果概率设置为1/100,这是否意味着运行PHP进程的任何Apache线程都会进入可能运行gc的进程池?
>或者,这仅适用于任何给定VirtualHost运行的线程吗?或者其他类型的分区?
>最后,如果一个PHP进程触发gc,它是否在所有PHP会话上执行gc?或者只是VirtualHost的会话?或其他类型的分配?

我正在尝试测量我需要调整给定VirtualHost的gc_probability设置,整个服务器,或者什么.

If the probability is set to 1/100,does that mean that any Apache thread that runs a PHP process goes into the pool of processes that may have gc run?

如果该进程触及session [session_start()],那么是的,它可能会运行垃圾回收.

如果您需要不同的虚拟主机以具有不同的垃圾收集和会话,则应使用session.save_path选项为每个虚拟主机设置不同的路径.您可以在apache虚拟主机配置中使用诸如`PHP_value session.save_path“/srv/www/www.example.org/sessions”之类的指令执行此操作.如果有多个不同的应用程序运行不同的会话要求,则可能需要设置不同的路径和GC.

老实说虽然PHP会话垃圾收集不是很好.最好完全禁用它并使用从cron启动的脚本来定期清理旧会话.或另一种需要程序支持的替代方法是将会话存储在数据库中.

如果您要为外部方托管东西,那么您几乎肯定希望为每个虚拟主机设置单独的会话目录.

猜你在找的PHP相关文章