まぽろぐ

まぽらんのブログ、略してまぽろぐです!ひとりごとを中心に、クリックゲーレビューやネトゲ、サーバー関係等の内容を書いていきます。たまにまじめな記事も書いたりするかもしれません。

【iis8+PHP5.5】OPcacheとAPCuを使ってみる

   

最近PSO2のチームサイトをリニューアルしている風魔さんのお手伝いを少ししていいるうちに、同じようなスペックのPCでありながら結構WordPressのレスポンスが違うことに気づきました。

ということで今回はiis8(8.5)で出来るレスポンスアップ方法の1つを書きたいと思います。

 

 

前置き

にしてもiis8(8.5)でWindowsServer2012(R2)な自宅サーバーを作って本番運用してる人なんてあんま聞かないですしね。ブログとかやってないでこっそりやってる人はいるかもしれませんけど。
まぁDataCenterって90万ぐらい(2012R2の場合)しますしね、Standardでも10万以上するし・・・

とまぁそんなことはいいのですが、まずは以下の記事をご覧ください。


ZendOpcacheとAPCuではじめるハイパフォーマンスPHP – pixiv engineering blog
だれでも知ってる?あのpixivのデベロッパーチームのブログです、PHP5.5の高速化について触れています。まぁ要するにこれをWindows上で、iis8上でやろうってお話です(Windows上のApacheでもやることは一緒です、Aache2Handlerで動くかはしりませんFastCGIなら動くと思います)。

まぁ体感できる効果があるかは知りません。pixivのような大規模サイトならまだしも、1000/日のビューが精一杯なまぽろぐで果たし効果があるのか、でもまぁやっておいて損はないでしょう。

ほ、ほら、いつか1万/日とか来るかもしれないじゃないですか・・・!(無い)

 

 

もう1つ言いたいことがある

また風魔さんとの話で出たんですけど・・・WordPressのよくある高速化プラグインについてです。

W3 total cacheとかquick cacheとか(名前違ってても知りません)ありますよね、自分あういうプラグインをいろいろ試してみてわかったんですが、iis環境じゃほとんど効果が無いです。
まぁ無いとは言いませんが、というのもキャッシュ系のプラグインはApacheのモジュールを使うと真の力を発揮するからです。
なのでiis環境じゃ使えない効果があってエラーはいたりします。

えっ・・・じゃApache使えばいいって?

_人人人人人人人_
> 完全に正論 <
 ̄Y^Y^Y^Y^Y ̄

まぁ使わなくてもうちぐらいには早くなるはずなので(うちのサイトは高速化プラグインを1個も使っていません)多分色々いじれば早くなると思います。
ただ自分が自宅サーバーを建ててから色々いじってきましたが・・・もう何をいじったのかさっぱり分からない(´・_・`)

今後はこういうふうにメモ書きを残していこうと思うまぽらんでした。

 

 

準備

それでは本題に入って行きたいと思います。
まずはなんといっても必要なファイルのダウンロードです。

ただOPcacheに関しては、PHP5.5からは標準搭載なので面倒臭ければそのまま利用できます。
ただ2014年1月20日に最新版が出ているので、やっぱ最新版だろJKって人は新しいのをダウンロードして上書きしてください。

基本的に全部PECLのキャッシュカテゴリーにあるのでそこから落とせます


PECL :: Package Browser :: Caching
APCuはこっちですね。


PECL :: Package :: APCu
ただ、OPcacheだけはリリースのリンクがなぜか無いので、こっちから落としてください


windows.php.net – /downloads/pecl/releases/opcache/7.0.3/
APCuは基本的に最新版でいいと思いまず、全部betaですし( ゚д゚ )
OPcacheは1バージョンしか無いのでそれで。

x64とかx86とかNTSとかTSとかどれ落とせばいいのよ~?って人はnts(ノンスレッドセーフ)のx86を落とせばいいです、64bitのOSでもx86で。x64を使いたいって人は試してみてください、動かなかったら知りません(自分の環境では動かなかった)

あとtsかntsかについてですが、少なくともWindowsのWebPIでPHPを入れた人はNTSのPHPを使用しています、自分でダウンロードした方はphpinfo();してntsか調べてください。

あとAPCuを動かすにはPEARコマンドが通らないといけないみたいなので、PEARも必要になります。
OPcacheもPEARが必要と書いてあるんですけど、そっちは別に無くても動くんですよねぇ


Manual :: PEAR パッケージマネージャの取得とインストール
こちらに書いてある、http://pear.php.net/go-pear.pharをダウンロードしておいてください。

 

 

インストール

全部ダウンロードしたらとりあえずファイルを突っ込んでいきます。
それぞれのDLLはPHP5.5がインストールされているファイルダ内のextフォルダに(extフォルダを動かしてる人はもちろんそちらに)入れてください。
go-pear.pharファイルはPHPがインストールされているフォルダに「pear」というフォルダを作成してそちらにおいてください。

 

PEAR

まずはpearコマンドを打てるようにします。コマンドプロンプト(一応管理者権限で)を起動し、先ほど作成したpearフォルダまで移動し、

php go-pear.phar

と打ちます。
すると色々インストールしてくれますのでナビゲーションに従ってください。

ここでは一応自分がやった時のスクショを載せておきますが、同じようにに動くかは知りません。

pear1

何も入れずエンター(上2つの致命的な勘違いコマンドは許して下さい(´;ω;`)

 

pear2

何も入れずエンター

この間に[y/n]を聞かれるフェーズがあった気がします、2回めなので出なかったのかも。
でた場合はy押してエンターしてください。

 

pear3

完了しました。

 

最後にregファイルを使って環境変数を変えろと言われますが、自分はあえて無視して(オイ)自分で入れます。環境変数のpathにphp配下のpearフォルダを入れておきます。

確認のためにpearコマンドを打ってみます

pear4

どうやら無事に動いているようですね、良かったよかった。

 

APCu

上ですでにextensionフォルダにapcuを入れていると思うので、あとはphp.iniに書き込むだけです。
php.iniに以下の文を加えておきましょう。

extension=php_apcu.dll
apc.enabled=1
apc.shm_size=128M

キャッシュのサイズはおこのみで調整してください、その他の設定については以下参照


PHP: 実行時設定 – Manual
 

OPcache

最初から同梱されているよいうこともあり[opcache]という項目の中に設定項目があるので、好きな様にコメントアウトを解除して設定してください。
dllの読み込みコードだけは最後に追加が必要です、通常のextension=とは違いzend_extensionなので注意してください。

zend_extension=php_opcache.dll

設定の詳細は以下参照


PHP: 実行時設定 – Manual
 

 

動作確認

phpinfo();すれば動いてるかどうか分かります。

apcu opcache

この設定は全然吟味してないので、多分参考にならないと思います。

 

 

便利なアプリ

OPcacheとAPCuの設定カスタマイズに一役買ってくれる便利なアプリです。
動きを見ながら設定できるので自分のサーバーにあった設定を見つけてください。

krakjoe/apcu at master · GitHub

rlerdorf/opcache-status · GitHub

使い方はググってください。
一つ忠告しますけど設置したら誰かに見られないように認証かけましょうね。

 

 

最後に

Windows環境でiisとかapacheとか使っている方の参考になると幸いです。
あと、最初のほうで紹介したPECLのキャッシュカテゴリーにあるようなキャッシュ系拡張機能を他に使っている方(Wincaheとかmemchashedとかを)は競合しないように注意してください。
少なくともAPCuとOPcacheのコンボは大丈夫です(やってることが違うので、詳しくはググって下さい)。

それではよいIISライフを!

 - サーバー , , , ,