我正在使用负载均衡器后面的几个Web服务器,我可以启用Sticky Sessions将用户保存到一个特定的Web服务器 - 这将起作用.
我一直在阅读有关PHP Sessions和MemCache的内容.我必须说我读过的内容令人困惑,因为有些网页说它是个好主意,而其他网页则相反.
问题:
Fre*_*Guy 63
1:是的.我强烈建议在Memcached中存储PHP会话.原因如下:
Memcached非常适合存储数据库和文件系统经常访问的小块数据.
Memcached专为会话而设计.它最初是livejournal.com的首席开发人员的心血结晶,后来也用于缓存用户帖子的内容.好处很直接:大部分行动发生在记忆中.页面加载时间大大提高.
值得庆幸的是,PHP和Apache有一个简单的实现来处理与Memcached的会话.只需安装一些shell命令即可
debian的例子:
sudo apt-get -t stable install php5-memcached
Run Code Online (Sandbox Code Playgroud)
和
将您的php.ini设置更改为类似于:
(摘自http://www.dotdeb.org/2008/08/25/storing-your-php-sessions-using-memcached/)
session.save_handler = memcache
; change server:port to fit your needs...
session.save_path="tcp://server:port?persistent=1&weight=1&
timeout=1&retry_interval=15"
Run Code Online (Sandbox Code Playgroud)
关键是session.save_path
它将不再指向服务器上的相对文件路径.提到了APC-APC用于缓存程序使用的.php文件.APC和Memcached将显着降低IO并使Apache免费提供更快的服务资源,如图像.
2: 不
3: 使用Memcached的根本缺点是数据易变性
会话数据在Memcached中不是持久的.因此,如果服务器崩溃,内存中的所有数据都将丢失.每个人都必须再次登录.
然后你有内存消耗......
请记住:会话存储在内存中.如果您的网站处理大量并发用户,您可能需要多花一点钱来进行更大的内存分配.
memcache扩展甚至带有一个会话处理程序,它只需很少的配置即可启动和运行.http://php.net/manual/en/memcached.sessions.php
我真的不知道哪个更"好".我觉得这将成为"依赖"的答案之一.这可能取决于您负载平衡的原因.如果少数用户每个都会造成大量负载,或者如果大量用户导致每个负载较小.
使用memcache进行会话存储可能有两个主要缺点.
首先,它是不稳定的.这意味着,如果您的某个memcached实例重新启动/崩溃等,则该实例中存储的任何会话都将丢失.如果他们使用传统的基于文件的会话,那么当服务器返回时它们仍将存在.
其次,可能更相关,memcached不保证持久性,它只是一个缓存.无论出于何种原因,都可以随时从memcached中清除数据.实际上,应该清除数据的唯一原因是缓存是否接近其大小限制.最近访问的数据将被驱逐出去.同样,这可能不是问题,因为如果用户的会话过时,用户可能已经离开,但这取决于您的需求.
小智 5
如果要使用“memcacheD”扩展名而不是“memcache”(有两种不同的扩展名)进行会话控制,则应注意修改php.ini。
大多数来自 Google 的网络资源都基于 memcache,因为它的版本比 memcacheD 早。他们会说如下:
session.save_handler = memcache
session.save_path = "tcp://localhost:11211"
Run Code Online (Sandbox Code Playgroud)
但是当涉及到 memcacheD 时它是无效的。
你应该像这样修改 php.ini :
session.save_handler = memcached
session.save_path = "localhost:11211"
Run Code Online (Sandbox Code Playgroud)
没有协议标识符。
来自:http : //php.net/manual/en/memcached.sessions.php#99646
归档时间: |
|
查看次数: |
47246 次 |
最近记录: |