0

タイトルにあるように、誰かが素晴らしいシステムやアイデアを持っていますか?

PHPで記述されApacheによって提供されるWebアプリの製品版をリリース1234からリリース1235に切り替えたいのですが、その前に、すべてのファイルをすでにオペコードキャッシュ(APC)に入れておきます。次に、切り替え後、リリース1234からファイルの古いキャッシュエントリを削除します。

私が考える限り、あるバージョンから次のバージョンにアトミックに切り替える簡単な方法は3つあります。

  1. / liveなどのシンボリックリンクがあります。これは常にドキュメントルートですが、あるバージョンから次のバージョンを指すように変更されています。
  2. 同様に、常にドキュメントルートであるディレクトリ/ liveがありますが、

    mv live oldversion && mv newversion live

    新しいバージョンに切り替えます。

  3. Apache構成を編集して、ドキュメントルートをnewversionに変更してから、apacheを再起動します。

3を実行する必要がない方が望ましいと思いますが、とにかくすべてのphpファイルをプリコンパイルし、1または2を使用してリリースを切り替えることは考えられません。

それで、誰かが私にオプション3に頼っても大丈夫だと説得するか、1または2で作業する方法を教えてくれるか、または私が考えていない他のオプションを明らかにすることができますか?

4

2 に答える 2

1

次に、切り替え後、リリース1234からファイルの古いキャッシュエントリを削除します。

キャッシュ全体をクリアするか、まったくクリアしないでください。それは選択的なプロセスではありません。これにより、問題へのアプローチが変わる可能性があります。事前コンパイルが最優先事項である場合、スイッチオーバー中にサーバーを停止することを余儀なくされる可能性があります。

于 2010-05-14T16:12:32.860 に答える
1

なぜあなたはこれをしたいのですか?

新しいリリースに切り替えるときは、Apacheを停止し、VCSからのチェックアウトを介してサーバー上のPHPファイルを置き換え、Apacheを再起動します。これを実行するのにほとんど30秒もかからず、スクリプト化することもできます。これらはすべて、ユーザーがほとんどまたはまったくいないときに実行されます。その後、オペコードキャッシュは空になり、誰かがファイルを使用するとすぐにそれ自体がいっぱいになります。

最初の数回のヒットでは最適なパフォーマンスが得られない可能性がありますが、それほど悪くはないはずです。私の本番システムでは、この短いパフォーマンスの低下に誰も気づきませんでした。そして、それらの中には本当に重い負荷システムがいくつかあります。

ユーザーへの迷惑なエラーメッセージを回避するために、ファイルを置き換えている間、サーバーに単純な「アップグレード...すぐに戻る」画面を配置することもできます。

于 2010-05-14T16:21:08.143 に答える