PECL :: Package :: memcache 2.1.1 版本的 Changelog 中有一条:
- Added experimental session storage support. You can use memcached as session storage.
也就是可以直接用 memcache 来作 PHP 的 session.save_handler。
1. 安装 memcached,还是那套 ./configure; make; make install,注意 memcached 用 libevent 来作事件驱动,所以要先安装有 libevent。
2. 安装 pecl::memcache,用 pecl 命令行工具安装:
pecl install memcache
或直接从源码安装:
phpize
./configure
make
make install
将 php.ini 中 extension=memcache.so 打开,重启一下 apache,查看 phpinfo 中的 Registered save handlers 会有 files user memcache 这3个可用。
3. 修正配置文件,在 php.ini 中全局设置:
session.save_handler = memcache
session.save_path = tcp://127.0.0.1:11211
或者某个目录下的 .htaccess :
php_value session.save_handler memcache
php_value session.save_path tcp://127.0.0.1:11211
再或者在某个一个应用中:
ini_set(session.save_handler, memcache);
ini_set(session.save_path, tcp://127.0.0.1:11211);
应用多个 memcached server 时用逗号,隔开,并且和 Memcache::addServer() 文档中阐明的一样,可以带额外的参数persistent、weight、timeout、retry_interval 等等,类似这样的:tcp://host1:port1?persistent=1&weight=2,tcp://host2:port2 。
4. 启动 memcached:
memcached -d -l 127.0.0.1 -p 11212 -m 128
5. 在程序中应用 memcache 来作 session 存储,用例子测试一下:
___FCKpd___6
6. 用 sessionid 去 memcached 里查询一下:
<?php
$memcache = memcache_connect(localhost, 11211);
var_dump($memcache->get(19216821213c65cedec65b0883238c278eeb573e077));
SESSION[TEST3] = time();
print <br><br>;
print session_id();
?>
会有看到
string(37) TEST|i:1177556731;TEST3|i:1177556881;
这样的输出,证明 session 正常工作。
用 memcache 来存储 session 在读写速度上会比 files 时快很多,而且在多个服务器须要共用 session 时会比较方便,将这些服务器都配置成应用同一组 memcached 服务器就可以,减少了额外的工作量。缺点是 session 数据都保存在 memory 中,持久化方面有所欠缺,但对 session 数据来说也不是很大的问题。
分享到:
相关推荐
"PHP实现多服务器session共享之memcache共享"的主题着重于如何在多台服务器之间有效地存储和同步用户的session数据,以确保用户在不同服务器间的会话状态能够保持一致。本文将深入探讨这一主题,并围绕相关知识点...
总结,通过memcache实现PHP的多服务器session共享,可以有效解决分布式系统中的用户状态同步问题,提高系统的可扩展性和稳定性。然而,这也需要开发者对memcache、PHP配置以及网络通信有深入的理解,以便在实际应用...
通过这种方式,无论用户请求哪个服务器,只要Session ID相同,服务器都能从Memcache中获取到相应的Session数据,从而实现跨服务器Session共享。 这种方案的优点在于,Memcache的分布式特性可以轻松地扩展到更多的...
总结,session共享是多服务器环境中的关键问题,memcache和Redis都是有效的解决方案。通过将Session数据存储在这些内存数据库中,我们可以确保在不同服务器之间的一致性和高可用性。实现这一目标通常涉及自定义PHP的...
本文将深入探讨如何使用PHP和memcached实现多服务器session共享。 首先,memcached是一个高性能的分布式内存对象缓存系统,它可以临时存储数据,减少数据库负载。在PHP中,我们可以通过php_memcache扩展与memcached...
本文实例讲述了PHP保存session到memcache服务器的方法。分享给大家供大家参考,具体如下: 传统的 session 是写入到服务器文件中,可以在 php.ini 中看出,清单如下 session.save_handler = files session.save_...
为了解决这个问题,我们可以利用memcache(或其升级版memcached)来实现session的存储和共享,从而达到session跨服务器跨域的目的。本文将详细介绍如何基于memcache实现PHP的session方法重写。 首先,memcache是一...
**三、动机:多服务器session信息共享** 在大型Web系统中,通常会将不同业务部署在不同的服务器上。为了跨服务器共享session数据,可以使用像Memcache这样的分布式缓存系统。当用户在任何服务器上登录后,其session...
针对PHP Session阻塞问题,可以通过多种方式进行优化,包括但不限于更换存储方式(如使用Memcache或Redis)、优化脚本执行逻辑以及调整服务器配置等。通过这些方法可以有效缓解Session阻塞带来的负面影响,提高系统...
由于Memcache是非持久化的,当服务器重启或memcache服务出现问题时,session数据可能会丢失。为避免这种情况,可以考虑定期将session数据备份到数据库,或者使用支持持久化的Memcached。 6. **优化session管理**:...
2. **会话管理**: 利用memcache进行会话数据的存储,不仅可以避免单一服务器的会话数据丢失风险,还能实现多服务器环境下的会话共享,增强应用的可扩展性和灵活性。 3. **配置调优**: 通过细致调整memcache在PHP.ini...
- 如果遇到问题,检查错误日志以获取更多信息。 通过合理使用PHP Memcache扩展,开发者可以有效地提升基于PHP5.6的应用程序性能,减少数据库负载,从而改善用户体验。同时,理解如何正确安装和配置扩展,以及如何在...
Memcache是一个广泛使用的高性能分布式内存对象缓存系统,它可以用来存储数据,如数据库查询结果、session数据等,以提高网站的性能。 PHP-Memcache扩展是PHP与Memcache进行交互的桥梁,允许PHP代码直接存取和操作...
总的来说,使用memcache存储PHP session能够有效地解决多服务器环境下的session同步问题,提高Web应用的可扩展性。通过合理配置和使用memcached,可以减少数据库的压力,提升用户体验。在实际部署中,需要注意调整...
将session存储在Memcache中,可以使得在多个PHP服务器之间共享session成为可能。 1、直接修改php.ini配置文件 这是配置Memcache存储session的最直接方式。通过编辑php.ini文件,我们可以改变PHP默认的session处理...
最后,在实际部署时还需要考虑数据的持久性问题,Memcache默认是不提供持久化的,因此在重启服务或者系统故障时,session数据可能会丢失。可以考虑使用Redis的持久化功能,或者将session数据定期备份,以保证数据的...
主要介绍了PHP实现分布式memcache设置web集群session同步的方法,结合实例形式分析了php设置与使用memcache实现web集群session同步的相关操作技巧与注意事项,需要的朋友可以参考下