2

私がやろうとしていること:

.NETベースのWebサイトにファイルを起動したい。dllが変更されるたびに、WindowsはWebアプリをリサイクルします。アプリを介してファイルをrsyncすると、優先される1回ではなく、遅延のために数回リサイクルできます。これにより、サイトは長期間使用できなくなります。

私がそれを解決しようとした方法:

--delay-updatesを使用してこれを修正しようとしました。これは、一時ファイルを変更する前に、すべてのファイル変更を一時ファイルにステージングすることになっています。これはまさに私が望んでいたことのように見えましたが、-delay-updates引数を指定すると、アドバタイズされたように動作しないように見えます。(-vvを使用して)出力に識別可能な違いはなく、最終的な動作は同じです(アプリは1回ではなく複数回リサイクルされます)。

安定性の理由から、すべての本番マシンでCygwinを実行したくありません。そうしないと、ローカルステージングディレクトリにrsyncしてから、「アトミック」になるのに十分な速度のローカルrsyncを実行できます。

私はrsync3.0.9でCygwin1.7.17を実行しています。

私はatomic-rsync(http://www.opensource.apple.com/source/rsync/rsync-40/rsync/support/atomic-rsync)に出くわしました。これは、ステージングディレクトリに同期し、既存のディレクトリの名前を変更することでこれを実現します。次に、ステージングディレクトリの名前を変更します。残念ながら、これはWindowsの設定では機能しません。これは、実行中のdllファイルを含むフォルダーの名前を変更できないためです(許可が拒否されました)。

バイナリが実行されているフォルダを削除することはできますが、これにより、dllが更新されたときだけでなく、毎回アプリがリサイクルされます。これはさらに悪いことです。

誰かがどちらかの方法を知っていますか

  1. --delay-updatesが実際に機能していることを確認します
  2. すべてのファイルをアトミックに(というより、非常に迅速に)更新するという私の目標を達成しますか?

助けてくれてありがとう。

4

1 に答える 1

2

これはかなり古いものですが、最終的に--delay-updates実際に意図したとおりに機能していることを発見しました。他の要因により、アプリは複数回リサイクルされているように見えました。

于 2013-04-01T20:39:41.867 に答える