PHPのセッションはファイルに書き出すことが一般的だと思うが、サーバが複数台に分かれた場合に共有できない。
解決方法としては以下のうちどれかといったところか。
memcachedの利用事例もあるようなので、この解決策が良さげ。
memcachedとmemcacheがあるが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 Dumping memcache contents Number of buckets: 1 Number of items : 1 Dumping bucket 1 - 1 total items add hoge 0 1528106584 6 hogege
参考サイト