如何在$ _SESSION中存储数据与memcache(d)不同?

时间:2012-02-23 14:52:09

标签: php session memcached

明显的区别在于,当存储在memcache(d)时,数据可以通过系统获得。会话存储每个用户的数据,理论上可以使用session_id()与更多用户共享此数据。

然而,在性能,速度和内存使用方面 - 有区别吗?

4 个答案:

答案 0 :(得分:5)

默认情况下,PHP会话存储在文件系统中。您可以修改此行为,以便将它们保存在数据库中,或保存在memcached中。

因此,就性能而言,memcached 通常比文件系统更快。 这显然取决于您的环境。

请参阅session_set_save_handler

答案 1 :(得分:2)

苹果和橘子。他们完成两件完全不同的事情。你真正的问题是文件存储与memcache。理论上,您可以在memcache中存储会话信息,而不是基于文件的存储。然后会话的性能与直接将值推送到memcache相同。

在所有条件相同的情况下,memcache的性能远远优于文件缓存。就内存而言,当您读取文件以获取数据(在本例中为会话文件)时,无论如何它都会进入内存,因此它不会节省任何空间。实际上,如果apache发生多个请求,则不同的工作进程可能需要读取相同的会话文件 - 每个使用自己的内存块直到获得工作进程。使用memcache,这不会发生。


答案 2 :(得分:0)

好吧,你可以简单地为$_SESSION使用memcache。这肯定更快,因为它不需要大量调用PHP API,但它直接转向C API。

虽然性能奖金很小,但PHP确实不是那么慢。

如果您要将memcache与文件系统会话进行比较:使用memcache。真的,你应该,因为它只是将它们存储在内存中而不是将它们存储在文件系统中。快得多。当然,如果memcache服务器超载,您可能会丢失会话数据。内存使用memcache当然会高于文件系统的替代方案。

答案 3 :(得分:0)

会话存储在文件或数据库中。 Memcache存储在内存中以便更快地访问。