PHPめも

PHPのセッションはファイルに書き出すことが一般的だと思うが、サーバが複数台に分かれた場合に共有できない。

解決方法としては以下のうちどれかといったところか。

  • データベースに保存する
  • NFSで共有する
  • memcachedで共有する

memcachedの利用事例もあるようなので、この解決策が良さげ。
memcachedとmemcacheがあるがmemcachedの方が早いみたい。

memcachedのインストール

# yum install memcached libmemcached php-pecl-memcached

バージョンを確認

$ memcached -h | head -n1
memcached 1.4.15

設定変更は以下のファイルを編集
DDoS攻撃のほか、キャッシュデータを第三者に参照され、情報漏洩が発生する可能性があるために接続制限をかけます。

# vi /etc/sysconfig/memcached
OPTIONS="-l 127.0.0.1 -U 0"

memcachedを起動後にrootユーザーにて以下コマンドを実行します。

curl memcached-udp-check.dns.ne.jp

コマンドを実行した結果、SAFEと表示された場合は設定完了です。
VERSIONから始まる行が表示された場合、memcachedが外部からUDPでアクセス可能となっており、DDoS攻撃に悪用される恐れがあります。

自動起動の設定

# systemctl enable memcached

起動

# systemctl start memcached

ステータス確認

# systemctl status memcached

.htaccess

php_value session.save_path "localhost:11211"
php_value session.save_handler memcached

動作確認

telnetでおしゃべりしてみます。

$ telnet localhost 11211
set hoge 0 100 6
hogege
STORED
get hoge
VALUE hoge 0 6
hogege
END
quit
Connection closed by foreign host.

ツールでキャッシュされているか確認。

$ memcached-tool localhost dump | strings

参考サイト


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2021-09-19 (日) 19:09:39