2011-06-28 20 views
2

これはサーバーに関連する動作か通常の動作であるかわかりませんが、私は尋ねると思いました。私は比較的トラフィ​​ックの多いウェブサイト(200k +ユニーク/週)を実行し、リダイレクトを含むPHPファイルを通してたくさんのリンクを提供しています。FTP経由でファイルを同時にアップロード中にファイルを実行できない

唯一の問題は、SFTP経由でこのファイルを頻繁に更新する必要があることです。ファイルのサイズは約800kで、ダウンロードには約1秒かかります。しかし、PHPファイルからリダイレクトされたリンクがうまくいかず、SFTP経由でファイルをアップロードまたはダウンロードしているときにのみこれが発生することに気づきました。

私の質問は次のとおりです。FTPで新しいファイルをアップロードしている間にファイルを実行可能にする方法はありますか?このダウンタイムはユーザーにとって煩わしいものです。これは私が気づいていないLinuxでの設定ですか、これについて何もできませんか?違いがある場合、私のサーバーはCentosを実行しています。

+2

別のファイル名を使用してアップロードし、古いファイルを削除して新しいファイルの名前を正しい名前に変更するPHPスクリプト(保護された)を作成します。 – pimvdb

答えて

3

別のファイル名でアップロードし、名前を変更して古いファイルを破棄します。アップロードにはかなりの時間がかかります(「瞬間」を超えるものが重要な場合)。名前の変更(またはmv)はアトミックであり、ユーザーを待たせることはありません。あなたはファイルをアップロードするのに必要な時間を取ることができますし、分割して名前を変更します。

+0

@DavidO Symlinks man .. sym links。 2番目のファイルは高速ですが、ファイルの名前を変更するかmvでファイルを置き換えることは、シンボリックリンクを使用するよりも大幅に遅くなるでしょう。 – FinalForm

+0

あなたの投稿を見ました。私はいくつかの文書を要求するコメントをつけてそれについていくつもりでした。私はあなたを信じていないわけではありません。あなたは正しいかもしれません。私は啓発を見つけることができるどこかを探しています。 :) – DavidO

+0

@DavidOそれについて考えてみてください。あるディレクトリから別のディレクトリにたくさんのファイルをmvできましたか?またはあるディレクトリから別のディレクトリにたくさんのファイルを書いたことがありますか?それは数秒以上かかります。それは瞬間的なものになるだろう、それは唯一のファイルなので、あなたはどのように思う?それは合理的ではありません。シンボリックリンクはプログラミングや参照のポインタのようなもので、アドレスポインタのようなものです。 – FinalForm

1

Pmivdbは実際にそれを持っています。一時ファイルでアップロードして名前を変更してください(古いファイルのコピーを保存してください)。それは本当にあなたの最高の(唯一の?)オプションです。

2

問題は、ファイル転送がアトミックではないことです。それはアップロードされるファイルを書き換えます。その間にファイルがダウンロードされると、ファイルが不完全になります。

ファイルを別の場所にアップロードし、アップロードが完了した後にファイルを正しい場所に移動すると、ファイルがアトミックに置き換えられます。

+0

@datasageいいえ、シンボリックリンクを使用してください。 – FinalForm

+2

mvは原子的で、ファイルを別の物理ボリュームに移動しない限り、基本的には単一のファイルのインスタントです。ファイルデータ自体は移動せず、データを指すファイルシステムだけが変更されます。 – datasage

+0

@datasageあなたがファイルを上書きしない限り。 :/ – FinalForm

1

ファイルを別のフォルダに入れてファイル名をインクリメントすると、最新のファイルを使用するPHPスクリプトがありますか?

関連する問題