同一ファイルを検出できるPHPオペコードキャッシュ

同一ファイルを検出できるPHPオペコードキャッシュ

現在、APC と PHP FPM を使用して、数百の Wordpress サイトをキャッシュしています。2 GB のキャッシュではすべてがうまく機能しますが、それほど効率的ではなく、キャッシュは常に最大限に使用されます。

たとえば、同じサーバー上にすべて同一のバージョンの 200 個の Wordpress サイトがある場合、200 個の同一の wp-db.php ファイルがキャッシュされます。

数年前、それがセキュリティ上のリスクになる可能性があるという議論があったように思います。それがもはや問題になるとは思いませんが (特に PHP FPM の場合)、とにかくすべてのサイトを管理しているので、メリットはデメリットを上回ります。

近年、この状況は変わりましたか? 特に、新しいデフォルトの Zend Opcache では? シンボリックリンクのようなハックは理想的ではありません。たとえば、500 のサイトを一度にアップグレードすることはできないため、時々ひどい障害が発生します。

答え1

これは部分的な回答です。zend opcode ではこの問題は発生しませんでした。

前回apcを使用したとき、この機能はバグのように感じました。機能として見たことはありませんでした:-)。chrootphp-fpmで-edプールを使用し、すべてのプールがchrootで同じ相対パスを持っている場合、apcで同じキャッシュキーを共有します。キーは完全な絶対ファイルパスであり、chrootではこのファイルパスに次の部分を含めることはできません。前にchroot。

したがって、chroot で試すことができます。ただし、これにはいくつかのトリックが伴います。

  • chroot には、php が必要とするすべての要素 (一時ディレクトリ、/etc/hosts、一部のデバイス) が含まれている必要があります。
  • PHPメールは動作しないので、SMTPモードで使用する必要があります。
  • 一部のファイルはキャッシュから除外する必要がありますが、設定を含むすべてのファイルは除外する必要があります。その点を忘れると、Web サイトが混乱してしまいます。
  • 他にもいくつかあるかもしれないが、chrootは決して単純ではない

関連情報