php下session入memcached
一、安装Apache2.4+PHP5.6
Apache2.4配置httpd.conf
参考文章:http://jingyan.baidu.com/article/fcb5aff797ec41edaa4a71c4.html
ServerRoot "c:/Apache24"
Listen 8080
DocumentRoot "c:/Apache24/htdocs"
# php5 support
LoadModule php5_module c:/php-5.6.15-Win32-VC11-x86/php5apache2_4.dll
AddType application/x-httpd-php .php .html .htm
# configure the path to php.ini
PHPIniDir "c:/php-5.6.15-Win32-VC11-x86"
memcache存放超过三十天的数据,0表示永不过期,expire最大是30*3600*24秒
bool Memcache::add ( string $key , mixed $var [, int $flag [, int $expire ]] )
time()+天数*3600*24即可
memcached无用户名和密码机制,启用防火墙封杀11211端口
只允许本地访问11211端口
iptables -a input -p tcp -s 127.0.0.1 -dport 11211 -j ACCEPT
二、session入memcached
//传统的代码
session_start();
$_SESSION['name']='天龙八部';
//取出
$name=$_SESSION['name'];
echo "name=$name";
?>
传统php.ini中配置session存放在文件中
[Session]
session.save_handler=files
session.save_path="c:/windows/temp"
修改php.ini文件,加载php_memcache.dll(版本要与php版本一致,放在php安装目录下的ext目录)
extension=C:\php-5.6.15-Win32-VC11-x86\ext\php.memcache.dll
session.save_handler=memcache
session.save_path="tcp://127.0.0.1:11211"
session入memcache代码
session_start();
$_SESSION['name']='天龙八部100';
$_SESSION['city']='beijing';
//如果session数据入mem,那它一定是以session_id为key值进行添加
//取出
$name=$_SESSION['name'];
echo "name=$name";
echo "sessionid=".session_id();
?>
如果不使用memcache php.memcache.dll扩展支持,可以使用memcached_client.php原生函数,只不过效率低
如果管理员不让我们修改php.ini文件,我们如何实现session入memcached功能,我们通过ini_set函数动态修改php.ini的配置,只作用于本页面,别的php页面不受影响,配置文件也不会被修改
ini_set("session.save_handler","memcache");
ini_set("session.save_path","tcp://127.0.0.1:11211");
推荐阅读
-
PHP实现负载均衡下的session共用功能
-
linux下安装php的memcached客户端
-
利用Memcached在php下实现session机制 替换PHP的原生session支持
-
ubuntu下搭建php开发环境(nginx+(cgi)php5fpm+memcached+xdebug)
-
memcached 和 mysql 主从环境下php开发代码详解
-
php下Memcached入门实例解析
-
ubuntu+php环境下的Memcached 安装方法
-
CentOS 5.4下的Memcache安装步骤(Linux+Nginx+PHP+Memcached)
-
Windows下Apache + PHP SESSION丢失的解决过程全纪录
-
php下使用无限生命期Session的方法