問題タブ [flock]

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.

0 投票する
8 に答える
18383 参照

macos - Linux flock(1) コマンドに相当する Mac OS X

Mac OS X でファイル ロックを管理する flock コマンドはありますか?

http://linux.die.net/man/1/flock

0 投票する
2 に答える
606 参照

nosql - 二部ネットワーク射影に相当するグラフDB?

2 種類のノード (ユーザーと場所など) を持つネットワークがあり、関係が "入っている" と仮定します。これは二部ネットワークであり、そこから通常は networkx などのモジュールが 2 つの方向のいずれかでネットワークの「射影」を提供するため、場所のネットワークを生成できます (共通ユーザーの数を重みとするリンクを使用)。またはユーザーのネットワーク (重みとして共通の場所の数を持つリンクを使用)。

グラフ データベースでこのようなネットワークを作成するにはどうすればよいですか? OrientDB、Neo4j、FlockDB など、最も一般的なオープンソースのものの例を教えてください...

より具体的には、グレムリンでそれを行う方法は?

そのような場合(グレムリン)私自身が回答を貼り付けましたが、それは生き残ったノードから始まります。通常、最初のステップはいくつかの間隔のサブセレクションであるため、投影されるノードから開始する方が効率的です

そのため、特定の日、またはその他の間隔で同じ場所にいたことによって関連しているユーザーのネットワークにのみ関心があります。

0 投票する
1 に答える
6645 参照

php - PHPセマフォの代替?

私は小さなオンラインゲームを作っています。そこでは(あなたは何を知っていますか)同じデータベースにアクセスする複数のユーザーがいるでしょう。私のホストはセマフォを有効にしておらず、他の何かを買う余裕がないので(私は高校生です)、別の方法を探しています。

いくつかの調査の後、私はいくつかの回避策に出くわしました:


A)セマフォを模倣するためにいくつかの関数を作成しました。これは、私が思うに必要なだけの機能です。

(ifステートメントに不要なコードがあることは知っています)。皆さんはどう思いますか?明らかにそれは完璧ではありませんが、一般的な慣習は大丈夫ですか?何か問題はありますか?並行性を扱うのは初めてであり、通常、もう少し意味のある低水準言語が好きです。

とにかく、私はこれで「論理的な欠陥」を考えることができません、そして私の唯一の懸念はスピードです。私はそれflockがかなり遅いことを読みました。


B)MySQLは「ロック」機能も提供します。これはどのように比較されflockますか?そして、あるユーザーのスクリプトがテーブルをロックし、別のユーザーがそれを要求すると、ブロックされると思いますか?私が考えることができる問題は、これがテーブル全体をロックすることですが、実際に必要なのは個々のユーザーのロックだけです(したがって、全員が待つわけではありません)。


データベースを更新するのにセマフォは必要ないと言われているようです。単純な増分クエリを使用できることがわかりましたが、解決する必要のある例がまだいくつかあります。

アクションをコミットする前に値を確認する必要がある場合はどうなりますか?たとえば、十分な体力のように、攻撃を許可する前に、防御側が十分に強いかどうかを確認する必要があるとしましょう。もしそうなら、他の誰かがデータをいじくりまわすことなく、戦いをしてダメージを与えてください。

私の理解では、コードの長さ全体にわたって毎回いくつかのクエリがあり(クエリの送信、データのフェッチ、インクリメント、保存)、データベースはそれを処理するのに十分スマートではありませんか?それとも私はここで間違っていますか?ごめん

0 投票する
0 に答える
675 参照

php - LinuxのマルチスレッドモードでPHP群れは安全ですか?

PHP 群れのドキュメントによると、ISAPI などの一部のマルチスレッド サーバーでは安全ではありません。これは、ロックがプロセス全体に及ぶためです。そのため、スレッド 1 の php の 1 つのインスタンスがファイルをロックすると、スレッド 2 の別の php インスタンスもファイルをロックする可能性があります。つまり、同じプロセスがすでにロックを所有しています。

現在、PHP のドキュメントでは、これは一部のオペレーティング システムでのみ発生する問題であり、例として ISAPI を挙げています。私の質問: これは、マルチスレッド モードの linux/apache でも発生する可能性がありますか? その場合、群れは安全ですか?

0 投票する
1 に答える
7128 参照

c - lockf() を使用してロックを解除する方法は?

txt ファイルから読み取り、次の番号を追加したいのですが、フォークも使用して 2 番目のプロセスとして機能させたいと考えています。次のコードでは、ファイルのロックを解除するために助けが必要です。ファイルのロックを解除できません。

0 投票する
1 に答える
697 参照

file - 書き込み中の読み取りを防ぐための flock の正しい使用法

*/10 * * * * /usr/bin/flock -x -w 10 /tmp/craigslist.lock /usr/bin/lynx -width=120 -dump "http://sfbay.craigslist.org/search/roo/sfc?query=&srchType=A&minAsk=&maxAsk=1100&nh=6&nh=8&nh=16&nh=24&nh=17&nh=21&nh=22&nh=23&nh=27" | grep "sort by most recent" -A 53 > /home/winchell/apartments.txt

*/10 * * * * /usr/bin/flock -x -w 10 /tmp/craigslist.lock /usr/bin/php /home/winchell/apartments.php

これはcronジョブです。2 行目の php コマンドは、lynx が apartments.txt に書き込んでいる間も実行されているように見えますが、その理由はわかりません。lynx/grep がそれに書き込みを行っている間に、partments.txt からの読み取りを防止しようとしていると仮定すると、これは正しい使用法ですか? ありがとう!

0 投票する
1 に答える
1444 参照

linux - TCL、Linux、および FLOCK

そのため、FLOCK 関数を使用してファイルをロックする TCL で記述されたプログラムを使用しています。現在動作している Linux よりも新しいバージョンの Linux でテストしていますが、新しいマシンでスクリプトを実行すると、/usr/bin/flock の FLOCK が使用されることがわかりました。これは FLOCK の TCL バージョンとは異なります。TCL 版では -read -write などを使用しますが、Linux 版ではまったく異なるオプションを使用します。

つまり、FLOCK 呼び出しに到達すると、プログラムは動作を停止し、エラーが発生します。Linux のバージョンに合わせてオプションを変更すると、他のマシンのプログラムが壊れます。

Linux バージョンではなく TCL バージョンを使用する方法はありますか?

0 投票する
1 に答える
387 参照

linux - 多くのプロセスのキャッシュロック?

1) 頻繁に実行される、2) 多くの異なるプロセスによって実行される、3) 時間がかかるスクリプトがあります。

更新: 時間がかかるのは、すべてのプロセスで結果が同じになるテストです。完全に冗長です。

キャッシングを行う時期だと思いますが、人種、紛争、腐敗、時間の渦の不安定性、ニワトリの可能性について心配しています.

どのプロセスもキャッシュを更新するだけでなく、キャッシュを読み取る可能性があるため、複雑になります。そのため、これらすべての組み合わせを処理する方法を知る必要があります。

これは、私よりも頭が良く、教育を受けた誰かがおそらくすでに理解しているような匂いがします。

とにかく、この質問をより具体的にするために、これまでに私が考えたことは次のとおりです。私は頭の中で群れを使用していますが、それが良い考えかどうかはわかりません。

  • キャッシュが新鮮な場合は、それを読んで立ち去る
  • キャッシュが古い場合
    • 書き込みロックを取得しようとする
      • ロックを取得したら、テストを実行してキャッシュを更新します
      • 私がロックを取得できない場合、他の誰かが書き込みまたは読み取りロックを取得していますか?
      • 共有されている場合、なぜ彼らは古いキャッシュを読んでいるのですか? 私はそれらを無視し、テストを行い、キャッシュを更新しますか (または、これにより半分書き込まれたキャッシュが読み取られる可能性があります...えーと...)
      • 排他的である場合は、テストを完了してキャッシュを更新するための短い時間を与えます。

それが理にかなっていることを願っています...

0 投票する
2 に答える
2853 参照

php - php 群れと fread と fwrite

次のように flock を使用している人を見かけます。

これも:

fopenしかし、通話と通話の間に他の誰かがファイルを編集する可能性はありませんflockか? と同じ質問fread


編集:
なぜ私がこれを求めているのかを明確にするために...私は私の質問をここのコードに基づいています。 fopenとflockの間に入ることができますか?

そのコードは絶対確実ですか?

0 投票する
2 に答える
6745 参照

linux - エラーが発生した場合の群れの解放?

次の Perl コードを想像してください (ここでは擬似コード):

この場合、Perl スクリプトは 2 行目で終了するため、ロックを解除しません。その場合、オペレーティング システムによってロックが解除されることはありますか? 「ロックを取得したスクリプトがクラッシュしました」と表示され、ロックが解除されますか? ロックをすぐに解除しますか?また、ロックを解除せずにどのスクリプトがクラッシュ/停止したかが明確になるように、スクリプトごとに 1 つの Perl インスタンスが実行されていますか?