Has anyone demonstrated in Windows/IIS a performance improvement regarding opcache alone VS opcache/wincache used together? Is there any potential downside to using them both?
OpCache を有効にすることを強く推奨します。この拡張モジュールは Windows 版の PHP に含まれています。 これは PHP スクリプトをコンパイルして最適化したうえで、メモリにキャッシュします。 そのため、ページを読み込むたびにコンパイルされることがなくなります。
php.ini では、次のように設定します:
例1 OpCache の推奨構成
opcache.enable=On opcache.enable_cli=On
IIS を使うなら、 WinCache を有効にすることを推奨します。 特に、共有ウェブホスティング環境やネットワークファイルストレージ (NAS) での利用の際におすすめです。 但し、PHP 8.0.0 以降では WinCache はサポートされていないことに注意して下さい。 すべての PHP アプリケーションが、 WinCache のファイルキャッシュ機能の恩恵を受けられます。 ファイルシステム上での操作が、メモリにキャッシュされるのです。 WinCache は、メモリ内のユーザーオブジェクトをキャッシュして、 php.exe や php-cgi.exe のプロセス間で共有することもできます (複数リクエストでのオブジェクトの共有)。 主要なウェブアプリケーションの多くは、 プラグインや拡張モジュールあるいは設定オプションで WinCache のユーザーオブジェクトキャッシュを使えるようになっています。 ハイパフォーマンスを求めるなら、 アプリケーション内でオブジェクトキャッシュを利用すべきです。 » http://pecl.php.net/package/WinCache から WinCache DLL (あるいは tgz) をダウンロードして、 PHP の拡張モジュール用ディレクトリ (php.ini の extensions_dir) に配置しましょう。 php.ini では、次のように設定します:
例2 WinCache の推奨構成
extension=php_wincache.dll wincache.fcenabled=1 wincache.ocenabled=1 ; removed as of wincache 2.0.0.0
IIS マネージャーで FastCGI モジュールをインストールして、`.php` へのハンドラマッピングを追加します。ここでは、PHP-CGI.exe へのパスを指定します (PHP.exe ではありません)。
コマンドラインツール APPCMD を使えば、IIS の構成をスクリプト化できます。
おそらく、データベースサーバーも必要となることでしょう。 主要なデータベースは PHP 用の拡張モジュールを提供しています。 もしウェブサイトへのアクセスがそれほど多くないのなら、 ウェブサーバーと同じマシンでデータベースを動かすこともできます。 主要なデータベースの多くは Windows 上でも動作します。
PHP には mysqli 拡張モジュールと pdo_mysql 拡張モジュールが含まれています。
Has anyone demonstrated in Windows/IIS a performance improvement regarding opcache alone VS opcache/wincache used together? Is there any potential downside to using them both?