当前位置:首页 > 开发 > 编程语言 > PHP > 正文

PHP memcached的Session的使用与配置

发表于: 2011-02-25   作者:bardo   来源:转载   浏览次数:
摘要: 在http://bardo.iteye.com/blog/914110这篇文章中,我们已讲了 PHP memcached 的安装方法。 PHP memcached的Session的使用,有哪些问题,这里简述一下: memcached的session,第一大优点是比PHP session要高效,快速。其次是可以方便实现多主机session共享使用以下方式使用memcached的session:单一

http://bardo.iteye.com/blog/914110这篇文章中,我们已讲了 PHP memcached 的安装方法。 PHP memcached的Session的使用,有哪些问题,这里简述一下:

memcached的session,第一大优点是比PHP session要高效,快速。其次是可以方便实现多主机session共享
使用以下方式使用memcached的session:
单一站点的服务器,可以在php.ini中使用:
session.save_handler "memcached"
session.save_path  "host1:11211,host2:11211"
 session.save_path 中的参数必须是逗号分隔的主机名加端口。主机名也可以使用IP地址。
虽然,服务端都是memcached,但不同于memcache扩展,它不需要在save_path中指定通讯协议
如果服务器有多主机,你要给你当前的虚拟主机配置,则可以配置到.htaccess文件中。格式如下:
php_value session.save_handler "memcached"
php_value session.save_path  "host1:11211,host2:11211"
 注意事项:此时,php.ini中的 session.use_cookies的值必须是1。如果系统中此值不是1,那么在

.htaccess文件中要增加:
php_value session.use_cookies = 1
 如果.heaccess报错,可以参考下面的例子进行修改:
# PHP 4, Apache 1.
<IfModule mod_php4.c>
  php_value session.save_handler "memcached"
</IfModule>
# PHP 4, Apache 2.
<IfModule sapi_apache2.c>
  php_value session.save_handler "memcached"
</IfModule>
# PHP 5, Apache 1 and 2.
<IfModule mod_php5.c>
  php_value session.save_handler "memcached"
</IfModule>
 .htaccess可以控制到目录级别。而同时,还有可以直接在php代码中控制的方式:
ini_set("session.save_handler", "memcached");
ini_set("session.save_path", "host1:11211,host2:11211");
然而,这也要看你PHP的运行模式,如果是 mod_php方式, .htaccess是可以修改的, 但是如果你安装的是
fast_cgi,那么,你需要php_fpm来管理不同的php.ini。如果是mod_fcgid,那么,就要用FcgidInitialEnv

PHPRC "/dirOfPhiIni" 来设置不同的php.ini,但是,FcgidInitialEnv是新版本的中的命令。老板本的则是

DefaultInitEnv。有些版本有BUG,不一定能设置成功。而对于suPHP,则也需要在其配置中指定不同的配置

目录。

以下是 mod_fcgid 的一个配置实例:

#httpd.conf

LoadModule php5_module /php/php5apache2_2.dll
LoadModule fcgid_module modules/mod_fcgid.so
PHPIniDir /php

<IfModule fcgid_module>
# whatever directives wanted bla bla bla
# Use same php.ini as mod_php globally for mod_fcgid
FcgidInitialEnv PHPRC "/php"
</IfModule>


#httpd-vhost.conf

#using mod_php and /php/php.ini
<VirtualHost *:80>
    ServerName php.example.com
    DocumentRoot "/home/htdocs"
</VirtualHost>

#using mod_fcgid and /home/user1/php.ini
<VirtualHost *:80>
    ServerName user1.example.com
    DocumentRoot "/home/user1/htdocs"
      FcgidInitialEnv PHPRC "/home/user1"
      AddHandler fcgid-script .php
      FcgidWrapper "/php/php-cgi.exe" .php
</VirtualHost>

#using mod_fcgid and /home/user2/php.ini
<VirtualHost *:80>
    ServerName user2.example.com
    DocumentRoot "/home/user2/htdocs"
      FcgidInitialEnv PHPRC "/home/user2"
      AddHandler fcgid-script .php
      FcgidWrapper "/php/php-cgi.exe" .php
</VirtualHost>

#using mod_fcgid and global php.ini
<VirtualHost *:80>
    ServerName user3.example.com
    DocumentRoot "/home/user3/htdocs"
      AddHandler fcgid-script .php
      FcgidWrapper "/php/php-cgi.exe" .php
</VirtualHost>  
如果这些所有针对站点设置的都行不通,那你只能够使用代码的方法区别对待了。
代码中使用,一种可以直接调用ini_set, 还有一种,就是用 memcached自己写一个 session类,然后,映身

session函数到你写的session类中,这一点网上也是有例子的,所以,也不用多讲了。

PHP memcached的Session的使用与配置

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
声明:本篇文章是根据memcached-session-manager官方配置方法wiki页面翻译整理,关于memcached-sess
声明:本篇文章是根据memcached-session-manager官方配置方法wiki页面翻译整理,关于memcached-sess
声明:本篇文章是根据memcached-session-manager官方配置方法wiki页面翻译整理,关于memcached-sess
声明:本篇文章是根据memcached-session-manager官方配置方法wiki页面翻译整理,关于memcached-sess
文章为转载他人文章:http://chenzhou123520.iteye.com/blog/1650212 Introduction 如果为了简单使
声明:本篇文章是根据memcached-session-manager官方配置方法wiki页面翻译整理,关于memcached-sess
我 们都知道对于一些大型的web2.0的网站,在正式部署时一般是部署在不同故障域的多台应用服务器上,
我 们都知道对于一些大型的web2.0的网站,在正式部署时一般是部署在不同故障域的多台应用服务器上,
MSM--Memcached_Session_Manager介绍及使用 我们都知道对于一些大型的web2.0的网站,在正式部署时一
我 们都知道对于一些大型的web2.0的网站,在正式部署时一般是部署在不同故障域的多台应用服务器上,
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号