Php

如何使用 memcached 和 unix 套接字儲存 php 會話

  • January 22, 2013

我用 systemd、nginx 和 php 用 php-fpm 執行 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

但這並沒有改變任何東西。

任何見解或建議將不勝感激。

記憶體記憶體配置.d

Memcached 的 unix 套接字只需要一個文件路徑。

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

stats您可以通過 unix socket執行命令來確認 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日誌

引用自:https://serverfault.com/questions/470738