0

だから私の質問は簡単です: cache:clear中に symfony2 キャッシュファイルのパスを設定できますか、後で変更できますか、それとも相対にすることができますか? または何か?

説明 :

heroku-buildpack-php-tyler : heroku-buildpack-symfony2のフォークのフォークを使用して、Heroku に Symfony2 アプリケーションをデプロイしています。

展開時に、プラットフォームは、コンパイル/インストールなどのために/tmpXXXX/などのランダムな一時的な場所へのgit プッシュを受け取ります。

コンパイル後、アプリの「zip インストール」のように/tmpXXXX/のコンテンツを保存して、他のインスタンスに簡単にデプロイできるようにします。その後、アプリは起動時に新しいインスタンスの/app/ディレクトリにデプロイされます。

問題は、コンパイルの終了前にcache:clearを実行すると、キャッシュ ファイルのパスが/tmpXXXX/の場所からダンプされることです... すべてが壊れます。

そのため、起動時にキャッシュをウォームアップするとうまくいきますが、60 秒以上かかることが多く、heroku でアプリが 60 秒以上起動すると、再起動してエラーが発生します。

4

3 に答える 3

1

CCH / HerokuビルドパックでPRを作成したので、私は自分の質問に答えています

このファイルのように簡単sedにトリックを行いました。

コードは次のようになります。

    find $CACHE_DIR/app/cache/prod -type f -exec sed -i "s@$CACHE_DIR@$APP_DIR@g" {} \; | indent
于 2014-03-23T09:29:08.857 に答える
0

ここで起こっていることについての議論と適切な解決策があります...

https://github.com/heroku/heroku-buildpack-php/issues/64

https://github.com/symfony/symfony/pull/10999

そして、修正された新しいビルドパック (今から試してみます)

https://github.com/CHH/heroku-buildpack-php/pull/67

于 2014-11-30T08:52:08.503 に答える
0

デプロイ用に「デプロイ」と呼ばれるカスタム Symfony 環境を作成し、別のキャッシュ フォルダーをオーバーライドできます。

新しい環境 (以下の例では「デプロイ」という名前) を作成したらgetCacheDir、クラスのメソッドを次のapp/AppKernel.phpようにオーバーライドできます。

public function getCacheDir()
{
    if ($this->environment === "deploy") {
        return '/the/path/to/your/symfony/cache/'.$this->environment;
    } else {
        return $this->rootDir.'/cache/'.$this->environment;
    }
}

信頼できるユーザーのみがローカルで環境にアクセスできることを確認してください。

于 2013-07-20T16:52:10.400 に答える