如何在CentOS VPS上的Memcached中存储PHP会话

了解如何在CentOS VPS上的memcached中存储PHP会话。

关于Memcached

Memcached是来自数据库调用,API调用或页面呈现的结果的小块任意数据(字符串,对象)的内存中键值存储。

为什么要在Memcached中存储会话?

Memcached将会话存储在内存中,而不是文件。因为内存比读取文件更快,您的网站将表现更好,减少加载时间。

什么是捕获?

会话将仅存储在内存中,当您的VPS关闭或重新启动时,内存不能保存数据,因此会在关闭时删除会话。

建立

在开始本教程之前,请确保您已经开始运行PHP 5安装,您可以在PHP帮助部分找到有关如何执行此操作的教程。 确保您已安装EPEL存储库,您需要用于Memcached的EPEL存储库,因为Memcached在基本存储库中不可用。
rpm -Uvh http://mirrors.kernel.org/fedora-epel/6/x86_64/epel-release-6-8.noarch.rpm
不需要更新软件包到最新的可用版本,但建议。
yum update

安装Memcached

让我们开始安装Memcached。
yum install memcached
安装Memcached后,打开Memcached with VI的配置文件。
vi /etc/sysconfig/memcached
你会看到:
PORT="11211"
USER="memcached"
MAXCONN="1024"
CACHESIZE="64"
OPTIONS=""
Memcached不受密码或用户名保护,所以任何人都可以通过端口11211访问它。我们不希望这样,所以我们将允许只有您的VPS访问它通过在'OPTIONS ='部分插入一些选项:
PORT="11211"
USER="memcached"
MAXCONN="1024"
CACHESIZE="64"
OPTIONS="-l 127.0.0.1"
您可能想更改cachesize;默认是64MB。只要Memcached达到此限制,它将删除旧条目,以释放新条目的内存。除非你有一个非常庞大的网站,64MB应该是罚款。 让我们开始Memcached。
/etc/init.d/memcached start
Memcached在启动时默认不启动,我们希望它在启动时启动。
chkconfig --levels 235 memcached on

安装Memcached PHP扩展

我们需要安装几件事情,让我们从开发工具开始。这些是需要从源代码构建:
yum groupinstall "Development Tools"
之后,我们将安装更多的东西。前两个是构建扩展所必需的,最后两个是在PHP中运行/安装扩展所必需的。
yum install zlib-devel libmemcached-devel php-pear php-pecl-memcached
现在我们将使用我们刚刚安装的PECL(PHP Extension Community Library)安装PHP Memcached扩展。
pecl install -f memcached-1.0.0

将PHP.ini更改为将Memcached设置为会话处理程序

最后要做的是配置PHP使用Memcached作为会话处理程序。要做到这一点,你必须用VI打开/etc/php.ini中
vi /etc/php.ini
搜索如下所示的[[会话]]区域(从底部到顶部滚动更容易)。
[Session]
; Handler used to store/retrieve data.
; http://www.php.net/manual/en/session.configuration.php#ini.session.save-handler
session.save_handler = files
并将其更改为:
[Session]
; Handler used to store/retrieve data.
; http://www.php.net/manual/en/session.configuration.php#ini.session.save-handler
session.save_handler = memcached
session.save_path = "127.0.0.1:11211"
如您所见,我们已将session_handler更改为memcached,并将端口11211上的本地主机的路径更改为Memcached操作的路径。现在让我们重新启动Apache来重新加载PHP.ini文件。
service httpd restart
所有会话现在存储在Memcached而不是文件中。 您可能会看到以下错误:
Starting httpd: httpd: apr_sockaddr_info_get() failed for memcached
httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
您可以通过编辑apache配置来解决此问题:
vi /etc/httpd/conf/httpd.conf
并取消注释ServerName行:
ServerName localhost

更多Memcached

Memcached是存储密集型查询的理想选择,它不需要在每个页面视图上实时,但是以指定的时间增量(即每10分钟)。有关如何使用Memcached的脚本里面的详细信息,我建议你看一下第三步在这个教程。
提交者:Tim Kotkamp