symfony 2 キャッシュ (アプリ/キャッシュ) をファイルシステム以外の場所に保存する方法はありますか? Memcache、S3、または何か?組み込みオプションはありますか?
2 に答える
AppKernel クラスで getCacheDir() メソッドをオーバーロードすることによってのみ、プロジェクト ディレクトリの外に移動できます。
それを Memcache に移動するポイントは何ですか? このディレクトリの内容は、ほとんどの場合、「コンパイルされた」クラスとテンプレートです。とにかく、これらのファイルはメモリに入れられます (APC はそれを行います)。
編集getCacheDir()
: 開発では、I/O を回避するのは難しいですが、AppKernel のgetLogDir()
メソッドをオーバーライドしてそれらを指すようにすることで、Symfony のキャッシュ ディレクトリをメモリに簡単に移動でき/dev/shm
ます。
class AppKernel extends Kernel
{
// ...
public function getCacheDir()
{
if (in_array($this->environment, array('dev', 'test'))) {
return '/dev/shm/appname/cache/' . $this->environment;
}
return parent::getCacheDir();
}
public function getLogDir()
{
if (in_array($this->environment, array('dev', 'test'))) {
return '/dev/shm/appname/logs';
}
return parent::getLogDir();
}
}
ソース: http://www.whitewashing.de/2013/08/19/speedup_symfony2_on_vagrant_boxes.html
Gaufrette ( https://github.com/KnpLabs/Gaufrette、https://github.com/KnpLabs/KnpGaufretteBundle ) を使用して、可能なほぼすべてのストレージ (APC、メモリ、S3、FTP、SQL db) から仮想ファイルシステムを作成できます。 )。gaufrette://s3
次に、たとえばcache-dir を設定します。