如何使用 memcached 和 unix 套接字存储 php 会话

如何使用 memcached 和 unix 套接字存储 php 会话

我正在运行带有 systemd、nginx 和带有 php-fpm 的 php 的 Arch linux。我正在尝试(但失败了)配置 memcached 以使用 unix 套接字存储会话。我已安装并激活了 memcached,但是我无法禁用网络。我在 /etc/conf.d/memcached 中添加了以下行

MEMCACHED_ARGS="-s unix:///tmp/memcached.sock -a 666"

我也尝试过:

MEMCACHED_ARGS="-s /tmp/memcached.sock -a 666"
MEMCACHED_ARGS="-s unix:/tmp/memcached.sock -a 666"

当我重新启动 memcached 时我总是得到:

memcached.service - Memcached Daemon
          Loaded: loaded (/usr/lib/systemd/system/memcached.service; enabled)
          Active: active (running) since Sat 2013-01-19 17:41:15 PST; 5min ago
        Main PID: 773 (memcached)
          CGroup: name=systemd:/system/memcached.service
                  └─773 /usr/bin/memcached -l 127.0.0.1

当我运行带有会话的 php 脚本时,php 错误日志显示(这并不奇怪):

[19-Jan-2013 16:46:45 America/Los_Angeles] PHP Warning:  Unknown: Failed to write session data (memcached). Please verify that the current setting of session.save_path is correct (unix:/tmp/memcached.sock) in Unknown on line 0

我还安装了 php-memcached 包,但我不知道它有什么用处,也不知道该如何启动它。我在 /etc/php/conf.d/memcached.ini 中取消注释了以下行:

extension=memcached.so

但这并没有改变什么。

任何见解或建议都将不胜感激。

答案1

Memcached 配置.d

Memcached 的 unix 套接字只需要一个文件路径。

MEMCACHED_ARGS="-s /tmp/memcached.sock -a 666"

stats您可以通过unix套接字运行命令来确认Memcached是否正常运行。

bash $> echo stats | nc -U /tmp/memcached.sock
# returns list of server statistics

配置 PHP 的会话以使用 Memcached

编辑php.ini、 或/etc/php/conf.d/memcached.ini,并添加会话支持

extension=memcached.so
session.save_handler="memcached"
session.save_path="/tmp/memcached.sock"

重启服务并验证 php 日志

相关内容