PHP有几个会话设置,控制垃圾收集(即删除已到期的会话)的概率。
我的问题是:这个概率是否适用于在任何给定的Apache服务器上的所有虚拟主机上运行的所有Apache线程?
例如:
我试图衡量,我需要调整给定的VirtualHost,整个服务器,或什么的gc_probability设置。
如果概率设置为1/100,是否意味着任何运行PHP进程的Apache线程都进入可能运行gc的进程池中?
如果该进程涉及会话[session_start()],那么是的,它可能会运行垃圾回收。
如果您需要不同的虚拟主机以进行不同的垃圾回收和会话,则应使用session.save_path选项为每个虚拟主机设置不同的path。 你可以在你的apache虚拟主机configuration中使用`php_value session.save_path“/srv/www/www.example.org/sessions这样的指令。 如果有多个不同的应用程序运行不同的会话需求,则可能需要设置不同的path和GC。
老实说,虽然PHP会话垃圾收集并不是那么好。 完全禁用它并使用从cron启动的脚本定期清理旧会话可能会更好。 或者另外一个需要PHP应用程序支持的方法是将你的会话存储在数据库中。
如果您正在为外部举办东西,那么您几乎肯定要为每个虚拟主机设置一个单独的会话目录。