- 追加された行はこの色です。
- 削除された行はこの色です。
[[PHPめも]]
PHPのセッションはファイルに書き出すことが一般的だと思うが、サーバが複数台に分かれた場合に共有できない。
解決方法としては以下のうちどれかといったところか。
-データベースに保存する
-NFSで共有する
-memcachedで共有する
memcachedの利用事例もあるようなので、この解決策が良さげ。~
memcachedとmemcacheがあるがmemcachedの方が早いみたい。
*memcachedのインストール [#qad2c765]
# 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"
自動起動の設定
# systemctl enable memcached
起動
# systemctl start memcached
ステータス確認
# systemctl status memcached
.htaccess
php_value session.save_path "localhost:11211"
php_value session.save_handler memcached
*動作確認 [#w274bd14]
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
参考サイト
-[[複数サーバでセッションを共有する冴えたやりかた:https://www.slideshare.net/j_nakada/ss-7506214]]
-[[memcachedを利用して、複数サーバのセッションを共有化:http://navi-local.com/article/memcached%E3%82%92%E5%88%A9%E7%94%A8%E3%81%97%E3%81%A6%E3%80%81%E8%A4%87%E6%95%B0%E3%82%B5%E3%83%BC%E3%83%90%E3%81%AE%E3%82%BB%E3%83%83%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%92%E5%85%B1%E6%9C%89%E5%8C%96/]]
-[[セッションをNFSで共有するとApacheがおかしくなるのでmemcacheでの共有にした:https://blog.supersonico.info/?p=208]]
-[[Apache(×PHP)経由でセッションをMemcachedで管理しようとした際に、ファイルに書きだされてハマった点:https://qiita.com/banrui/items/9e860d0c8782a70a3d98]]