[[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
 $ memcached-tool localhost dump | strings

参考サイト
-[[複数サーバでセッションを共有する冴えたやりかた: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]]

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS