在LAMP集群中管理php会话的最佳方法是什么?

时间:2008-10-22 15:58:12

标签: php session distributed cluster-computing

我一直在读这个主题。突然间,这个解决方案成为必需品的日子已经来临,而不仅仅是一个梦想。

通过我的阅读,我看到了流行的差异(基于文件,memcached,共享内存(mm),sql表和自定义)。

我们想到的最初想法是使用安装在每个应用程序服务器(LAMP盒)上的ZFS或AFS,并将session.save_path php.ini设置指向该挂载路径中的目录。

我想听听成功故事。

5 个答案:

答案 0 :(得分:1)

John Campbell在这里的答案应该有所帮助

What is the best way to handle sessions for a PHP site on multiple hosts?

他所说的不仅仅使用Memcached非常重要。

此外,正如我在该问题中提到的,您可能需要考虑Zend平台附带的会话群集 - 但是该解决方案存在大量的许可成本。

答案 1 :(得分:0)

我认为将您的会话存储在数据库(如MySQL或PostgreSQL)中会带来最少的麻烦,特别是如果您的应用程序已经拥有了数据库,那么就会有这种情况。

Memcached也可以提供帮助,因为它可以在多台机器上存储数据,但我对此没有任何使用经验。

答案 2 :(得分:0)

我有点偏颇,但我建议HTTP_Session2。 (我正在研究这个包)虽然我们通过文件支持传统的会话处理,但我们也支持数据库(MySQL,PostgreSQL,SQlite等通过PEAR::MDB2)和memcached。

就个人而言,我们使用数据库处理程序,我们每天最多可以提供100,000个用户,没有更大的问题。我认为优化方面,接下来我会去memcached,但是数据库非常适合中间修复,不需要你向后弯曲。 : - )

顺便说一下,有关memcached的更多信息,请在How to manage session variables in a web cluster?上查看我的答案。

修改

既然你问过,这是一个例子(more in the API docs):

$options = array('memcache' => $memcache);

其中$memcachePECL::Memcache的实例,这是必需的。我知道我们缺少一个例子,我们会改进。与此同时,我们的源代码具有相当好的内联文档,例如,请查看API documentation

答案 3 :(得分:0)

我在共享服务器上使用基于会话的文件超过5年没有任何问题。我们有一些会话可以变得非常大(> 10MB)并且基于文件的工作非常好。通常,我们的共享服务器将每个站点的会话文件存储在chrooted目录中,因此只有root可以访问它们。我们发现这是非常可靠的,没有任何问题。虽然你放弃了数据库或memcached的一些功能,但有一个原因是它是PHP的默认值。

答案 4 :(得分:0)

如果您正在研究会话的Memcached解决方案 - 也许您应该查看Repcached。如果服务器重新启动等,应该减少丢失会话的任何问题

  

关于repcached
  “repcached”是补丁集,它将数据复制功能添加到memcached 1.2.x。

注意:我还没有尝试过repcached,但认为值得研究。