[[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" 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 *動作確認 [#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]]