問題タブ [file-locking]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Java 5 と Java 6 の間での FileLock の変更
Java 1.5 では、java.nio.channels.FileLock は、すでにロックされているファイルを確認しませんでした。ここで参照
スニペットには次のように記載されています。
java.nio.channels.FileLock クラスは、他の FileChannel インスタンスによってすでにロックされているファイルをチェックします。
Java SE 6 は、別の FileChannel インスタンスを介してロックされた領域と重複する領域をアプリケーションがロックしようとすると、OverlappingFileLockException をスローします。以前のバージョンは、他の FileChannel インスタンスによって取得されたファイル ロックをチェックしませんでした。デフォルトでは、java.nio.channels.FileChannel.lock メソッドは、要求されたロックがこの Java 仮想マシンによって保持されている領域と重複しているかどうかをチェックします。
そのため、Java 6 より前のバージョンでは、複数のプログラムが同じファイルに書き込みを行っている場合 (各プログラムが排他的ロックを取得しようとしていた場合)、排他的ファイル ロックは機能しませんでした。Java 5 以前では、人々はどのようにこれを回避していたのでしょうか?
perl - Perl で、作成時にロックされているファイルを作成する方法はありますか?
完全に書き込まれる前に、このファイルを探しに行く可能性のある他のプロセスが読み取りを開始しないように、作成時に読み取りに対してロックされるファイルを作成する必要があります。
作成してロックできることはわかっていますが、競合状態になる可能性があるのではないかと心配しています。
それとも私はここで何も心配していませんか?ファイルを書き込み用に開いてから、別のプロセスで読み取り用に開いた場合、書き込みプロセスがファイルを閉じるまで、読み取りプロセスは EOF を認識しませんか?
asp.net-mvc - IIS7/ASP.NET がイメージでディレクトリをロックしないようにする
ASP.NET MVC 2 フレームワークを使用した ASP.NET webapp があります。これにより、ユーザーはファイルをアップロード フォルダーにアップロードできます。この問題は、サブフォルダー内の画像が Web ブラウザーによってアクセスされるときに発生します。
アップロード フォルダーは静的であり、ユーザーが変更することはできませんが、その下にあるものはすべて変更できるようになっています。
上記の例では、w3wp.exe が sub_folder ディレクトリにハンドルを作成しているように見えるため (sysinternals によるプロセス エクスプローラーを使用)、image_gallery フォルダーがロックされます。sub_folder ディレクトリの名前を変更することはできますが、名前を変更した後もハンドルはそのままのように見えますが、親フォルダー (この場合は image_gallery) の名前を変更することはできません。
フォルダー内を参照して、他の画像やファイルなどを表示することはできますが、親フォルダーの名前を変更することはできません。
これは MVC 2 フレームワークを使用しているため、次のようにアップロード フォルダーを除外しました。
global.asax に変換されるため、ASP.NET がこれらの画像を (MVC フレームワークの外部で) 直接提供していると想定しています。
私の質問は、IIS が特定のディレクトリにハンドルを設定したり、強制的にハンドルを削除したりするのを防ぐ方法はあるのでしょうか? ignoreroute が指定されていても、MVC 2 フレームワークは何かトリッキーなことをしていますか?
ヒントをお寄せいただきありがとうございます。
c# - 画像ファイルは破棄後に解放されません
私はいくつかの画像をダウンロードし、それらをarrarListに入れて後で処理するプロジェクトに取り組んでいます。コードの次の部分に問題があります。それは最初のダウンロードで動作しますが、どういうわけか最初のダウンロード後に保存されていたファイル イメージがロックされます。ロックを解除する方法が見つからないようです。File.Delete("BufferImg"); 「BufferImg」がプログラムの他の場所で使用されていない場合、ファイルが別のプロセスによって使用されているというエラーが発生します。私は何を間違っていますか?
}
php - PHPスクリプトを並行して実行するには?
script1.php
script2.php
ブラウザーで script1.php を実行し、別のブラウザー ウィンドウで script2.php の直後に実行します。script2.php の session_start() は、script1.php の実行が終了するまで実行できません。
なぜそれが起こったのか、またphpスクリプトを並行して実行する方法は?
c# - 画像を arrayList に格納する
これが私がやろうとしていることです: スレッド B はいくつかの画像をダウンロードし、それらの画像を共有リソースに保存します: Static ArrayList IMBuffer; スレッド A は IMBuffer から画像を取得し、それに対して何かを行います。以下は私が得たものです:
スレッド B:
//何かをする
// 何か他のことをする
スレッド A:
ここに私が実行している問題があります。IMBuffer 内の画像はファイルストリームを使用して開かれたため、ストリームが破棄されると、次の行が表示されます: nextImg.Save(DLedIM); 「ファイルは別のプロセスによって使用されています」というエラーが発生しています。ただし、 fs.Dispose(); の場合。行がコメントアウトされている場合、プログラムは "BufferImg" をロックしており、その結果、初回以降は "BufferImg" にイメージをダウンロードできません。この問題を解決するにはどうすればよいですか? または、私がやろうとしていることを達成するためのより簡単な方法はありますか?
parallel-processing - グランドセントラルディスパッチを使用してファイルリージョンロックを効率的に実装するにはどうすればよいですか?
私のプロジェクトでは、複数のスレッドからファイルの読み取りと書き込みを行っているため、ファイル ロックを実装する必要があります。試してみfcntl()
ましたが、関数はスレッド間ではなくプロセス間のロックでのみ機能するようです。そのため、別の解決策を探しています。私が思いついた解決策 (これはおそらく最善ではありません) は、ファイルの各レコードにバイトを入れて、レコードがロックされているかどうかを示すことです。その後、ビジー ループを使用してバイトを読み取って確認できます。
それで、私は2つの質問があります。まず、ファイル領域のロックを実装する最も効率的な方法は何ですか? 次に、ビジー ループ アプローチを使用する場合、グランド セントラル ディスパッチで最適化するにはどうすればよいでしょうか。に送信されたブロックですべてのビジー ループを発生させることができると考えていましたdispatch_sync()
。しかし、それが効率的に機能するかどうかはわかりません。
ありがとう。
php - flockを使用せずにPHPでファイルをロックする
ユーザーがファイルをアップロードするとき(ユーザーは複数のファイルをアップロードできます)
nohup
バックエンドで実行する必要があるので使用しています。
私の元の設計では、実行されるたびにrun.php
ディレクトリをスキャンしますscandir
。を使用LOCK_EX
してファイルの排他ロックを取得し、ファイルにロックがある場合はファイルをスキップして次のファイルに移動するために使用します。ファイルにロックがある場合。問題は、サーバーにライブラリがなく、そのライブラリを使用してロックメカニズムを実行しているため、現時点では機能しないことです。それをインストールするのに1、2ヶ月かかるでしょう(私はそれを制御できません)。flock
LOCK_NB
//Do logic
fcntl()
flock
flock
したがって、そのための私の回避策は、ロックとして機能する一時ファイルlock.txtを用意することです。ファイル名がlock.txtに存在する場合は、ファイルをスキップして次のファイルに進みます。
どうすればファイル名を削除できますlock.txt
か?
さらに重要なことに、使用せずにphpでファイルをロックするためのより良い方法はありますflock
か?
php - スクリプトを同時に実行する if-else 問題
現在(サーバー制限)使えないflock
ので、代替のファイルロックシステムを作成中です。これが私のコードです。
これらのスクリプトを並べて実行すると。最初のスクリプトが完了するのを待ってから、2 番目のスクリプトを実行します。それらを同時に実行するにはどうすればよいですか? つまり、ロックが存在する場合、そのファイルをスキップして次のファイルに移動します。
c++ - C ++を使用してWindowsでファイルをロックするにはどうすればよいですか?
Windowsでファイルをロックして、現在のスレッド(同じプロセスの他のスレッドや他のプロセスがない)だけがファイルにアクセス(読み取り/書き込み)できるようにするにはどうすればよいですか?
可能であれば、fcntlのような解決策(記述子を持つファイルをロックする解決策)を教えてください。しかし、いずれにせよ、他の解決策も歓迎します。