本番データベースの構造を定期的に変更する必要があります。多くの場合、これらの変更は、新しい変更を参照するコードベースの変更に対応しています。
通常、新しい変更をプルして新しい SQL クエリを実行している間、失敗したクジラのページを 1 分間表示することになりますが、SQL クエリをオンザフライで実行するためのコンポーネントまたは何かを作成して、ダウンタイムが発生しないようにすることに興味があります。が必要になります。
まだ試していませんが、私の計画は次のとおりです。
- 特定のクエリを実行するためのコンポーネントまたは何かを記述します。クエリにはおそらく次のようなチェックがある
IF EXISTS
ため、一度だけ実行されます。モデル/永続キャッシュもクリアする必要があると思います。 - 上記のコンポーネント/クエリを AppController の 内から呼び出します
beforeFilter
。 - 変更をライブにプルします (上記のコードを配置します)。
- アプリが (別のユーザーまたは私たちによって) 1 回実行されるまで数秒待ちます。
- SQL クエリの実行をトリガーした beforeFilter コードを削除します。
これはクレイジーなアイデアですか?ここに私の質問があります: A. このようなものは機能しますか? B.私が見逃しているこれを行うためのより良い方法はありますか? C. エラーをスローしないようにするために、モデル キャッシュについて知っておく必要があることは何ですか。おそらく、デバッグ レベルは 0 に設定されます (サイトが本番環境にあるため)。
ところで、私たちは負荷分散システムを使用していないことに言及することは適切なようです。私たちは単一の専用サーバー上にいます。