16
EC-CUBE 名名名名名名名名名名名 × 名名名名名名 名名名名名名 PHP ののののののの ののののの@_aromaforest 2015/12/05 のののののの

PHPのキャッシュを使いこなせ!

Embed Size (px)

Citation preview

Page 1: PHPのキャッシュを使いこなせ!

「 EC-CUBE 名古屋ユーザーグループ × さくらクラブ」コラボ勉強会

PHP のキャッシュを使いこなせ! @_aromaforest 2015/12/05大河内健太郎

Page 2: PHPのキャッシュを使いこなせ!

自己紹介❖ 名前 : 大河内健太郎 (@nanasess) 年齢 : 38 才❖ 出身 : 愛知県西尾市一色町❖ 在住 : 宝塚市❖ 前職 : 寿司屋の板前 ( 安城市の「ひで寿司」 )❖ 資格 : 調理師・ふぐ処理師❖ Mac OS X / Windows Azure / FreeBSD 使ってます❖ EC-CUBE コミッター・公式エバンジェリスト❖ 趣味 : 動物に遊んでもらうこと

Page 3: PHPのキャッシュを使いこなせ!

はじめに❖ 今回の内容は、共有レンタルサーバーでは対応していないのがほとんどです m(_ _)m❖ 共有レンタルサーバーをお使いの方は、次のページのカスタマイズをお試しください。

Page 4: PHPのキャッシュを使いこなせ!

今すぐ使える簡単チューニング❖ EC-CUBE デフォルトでは、セッションをデータベースに格納している。❖ しかし、これは Web サーバーを複数台構成にしない限り有用ではありません。❖ 共有サーバーの方は、さっさと無効にしてしまいましょう!

public function __construct() { $this->objDb = new SC_Helper_DB_Ex(); /* ここをコメントアウトしてしまおう session_set_save_handler(array(&$this, 'sfSessOpen'), array(&$this, 'sfSessClose'), array(&$this, 'sfSessRead'), array(&$this, 'sfSessWrite'), array(&$this, 'sfSessDestroy'), array(&$this, 'sfSessGc')); */

EC-CUBE 2 系data/class/helper/SC_Helper_Session.php 27 行目付近

※ ただし、ガラケーの多いサイトは注意

Page 5: PHPのキャッシュを使いこなせ!

–Hypertext Preprocessor

“ まだ APC 使ってるの?”

Page 6: PHPのキャッシュを使いこなせ!

キャッシュのいろいろ❖ PHP Opcode キャッシュ❖ ファイルキャッシュ❖ ファイルパス解決キャッシュ❖ ユーザーキャッシュ❖ セッションハンドラ

Page 7: PHPのキャッシュを使いこなせ!

PHP Opcode キャッシュ❖ PHP を実行しやすい形式に変換し、共有メモリにキャッシュします❖ APC, WinCache, Zend Opcache など

Page 8: PHPのキャッシュを使いこなせ!

ファイルキャッシュ❖ PHP スクリプトファイルの内容を共有メモリにキャッシュします。❖ APC, APCu, WinCache など

Page 9: PHPのキャッシュを使いこなせ!

ファイルパス解決キャッシュ❖ ファイルにアクセスする際、 PHP エンジンは、相対パスを絶対パスに変換しています。❖ このキャッシュは解決済みのパスをキャッシュします。❖ WinCache くらい?

Page 10: PHPのキャッシュを使いこなせ!

ユーザーキャッシュ❖ PHP スクリプトから、キャッシュを操作できます。❖ 俗にいう KVS (Key Value Store)❖ APC, APCu, WinCache, memcache,

memcached, Redis など

Page 11: PHPのキャッシュを使いこなせ!

セッションハンドラ❖ セッションデータを格納します❖ 通常は、ファイルに格納するので低速❖ APC, APCu, WinCache, memcache,

memcached, Redis など

Page 12: PHPのキャッシュを使いこなせ!

どれ使ったらいいの?❖ Zend Opcache + APCu が手軽でおすすめ❖ Windows なら Zend Opcache + WinCache

❖ APC は PHP5.4 以降推奨されてない❖ Zend Opcache は PHP5.2 以降 , APCu は 5.3 以降なら使えます

❖ 金かけて本気でやるなら Redis も入れよう

Page 13: PHPのキャッシュを使いこなせ!

インストール❖ Zend Opcache

❖ PHP5.4 未満 ) pecl install opcache❖ PHP5.5 以降 ) php.ini に設定を追加

❖ Linux) zend_extension=/full/path/to/opcache.so❖ Windows) zend_extension=C:\path\to\php_opcache.dll

❖ APCu❖ pecl install apcu

❖ WinCache❖ インストーラで )

http://www.iis.net/downloads/microsoft/wincache-extension

Page 14: PHPのキャッシュを使いこなせ!

おすすめ設定opcache.enable=1opcache.memory_consumption=128opcache.interned_strings_buffer=8opcache.max_accelerated_files=4000opcache.revalidate_freq=60opcache.fast_shutdown=1opcache.enable_cli=1

php.ini に設定しよう• http://www.1x1.jp/blog/2013/04/php55_replace_apc_with_zend_opcache.html

• Zend Opcache と APC の比較• http://www.slideshare.net/hnw/zend-opcache

• Zend Opcache の速さの秘密• http://techportal.inviqa.com/2009/11/19/php-on-windows-the-wincache-1-0-benchmark/

• WinCache のベンチマーク• http://qiita.com/taruhachi/items/a844bf373623991873ff

• 本当は怖い Memcached• https://yakst.com/ja/posts/3243

• Redis の作者自身による Memcached との比較

ベンチマークの参考とか

Page 15: PHPのキャッシュを使いこなせ!

質疑応答

Page 16: PHPのキャッシュを使いこなせ!

ご静聴ありがとうございました !