PHP memcached的Session的施用與配置

來源:互聯網
上載者:User
PHP 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.

? php_value session.save_handler "memcached"

# PHP 4, Apache 2.

? php_value session.save_handler "memcached"

# PHP 5, Apache 1 and 2.

? php_value session.save_handler "memcached"

?.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


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


#httpd-vhost.conf

#using mod_php and /php/php.ini

??? ServerName php.example.com
??? DocumentRoot "/home/htdocs"

#using mod_fcgid and /home/user1/php.ini

??? ServerName user1.example.com
??? DocumentRoot "/home/user1/htdocs"
????? FcgidInitialEnv PHPRC "/home/user1"
????? AddHandler fcgid-script .php
????? FcgidWrapper "/php/php-cgi.exe" .php

#using mod_fcgid and /home/user2/php.ini

??? ServerName user2.example.com
??? DocumentRoot "/home/user2/htdocs"
????? FcgidInitialEnv PHPRC "/home/user2"
????? AddHandler fcgid-script .php
????? FcgidWrapper "/php/php-cgi.exe" .php

#using mod_fcgid and global php.ini

??? ServerName user3.example.com
??? DocumentRoot "/home/user3/htdocs"
????? AddHandler fcgid-script .php
????? FcgidWrapper "/php/php-cgi.exe" .php
?
如果這些所有針對網站設定的都行不通,那你只能夠使用代碼的方法區別對待了。
代碼中使用,一種可以直接調用ini_set, 還有一種,就是用 memcached自己寫一個 session類,然後,映身

session函數到你寫的session類中,這一點網上也是有例子的,所以,也不用多講了。

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.