4

symfony 2 キャッシュ (アプリ/キャッシュ) をファイルシステム以外の場所に保存する方法はありますか? Memcache、S3、または何か?組み込みオプションはありますか?

4

2 に答える 2

7

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

于 2012-05-28T12:18:58.227 に答える
0

Gaufrette ( https://github.com/KnpLabs/Gaufrettehttps://github.com/KnpLabs/KnpGaufretteBundle ) を使用して、可能なほぼすべてのストレージ (APC、メモリ、S3、FTP、SQL db) から仮想ファイルシステムを作成できます。 )。gaufrette://s3次に、たとえばcache-dir を設定します。

于 2013-12-26T18:46:59.713 に答える