- 1 名前:nobodyさん [02/06/23 10:18 ID:eY2l+Gw1]
- どんな環境でも使えて、軽くて、頑丈なロックを考えようじゃありません
- 577 名前:nobodyさん mailto:sage [03/11/09 20:54 ID:???]
- >>572
馴れ合い?
- 578 名前:nobodyさん mailto:sage [03/11/09 21:14 ID:???]
- >>577
「馴れ合い」の意味を知らないだけだろ。無知は構うな。ほっとけ。
- 579 名前:564 mailto:sage [03/11/10 14:47 ID:???]
- あれ?flockが使える環境の人もこのスレの需要あったの?
まぁどっちでもこの場合変わらないけど。
- 580 名前:nobodyさん mailto:sage [03/11/10 14:53 ID:???]
- >>561が勝手にflockと勘違いして
勝手に自分のやり方を押しつけたって事かぁ(・∀・)
- 581 名前:nobodyさん mailto:sage [03/11/10 16:11 ID:???]
- >>580
ということにしたいのですね? :-)
- 582 名前:nobodyさん mailto:sage [03/11/10 16:19 ID:???]
- もうほっとけほっとけ
- 583 名前:nobodyさん mailto:sage [03/11/10 16:43 ID:???]
- ♪か〜な〜しみ〜に〜であうた〜び〜
- 584 名前:nobodyさん mailto:sage [03/11/10 16:56 ID:???]
- ↓【Perl】flock() の使えない環境下でのファイルロック(排他処理)について語ろう
- 585 名前:nobodyさん mailto:sage [03/11/10 20:26 ID:???]
- 俺ん中の結論はRename形で、不雑なものになると管理が難しくなるんだよなぁ
- 586 名前:nobodyさん mailto:sage [03/11/10 20:34 ID:???]
- >>585
何の管理?
- 587 名前:nobodyさん mailto:sage [03/11/10 20:37 ID:???]
- 同じディレクトリに複数のDATがある場合
ユニークなファイル名を生成するようにしないと。 …今思ったけど、たいした事無いなw
- 588 名前:蟻の子一匹通さないロック [03/11/14 04:40 ID:uv5dJ3X6]
- 10 GOTO アルカトラズ島; # ロックへようこそ
20 処理; 30 逆転無罪; # 真犯人逮捕⇒釈放
- 589 名前:nobodyさん mailto:sage [03/11/14 05:44 ID:???]
- >>580
>551からの流れでずっとflockの話だったわけだが。
- 590 名前:nobodyさん mailto:sage [03/11/14 16:05 ID:???]
- どっちでも変わらん。
つーか変わってくるとしたらあれだ・・・ 掲示板とかのスクリプトで LOG→HTML随時吐き出し型 じゃなく LOG=HTMLを表示する型 の場合、Rename型の排他処理は行えない可能性がある。 ということで。 結論から言えば退避ファイル名をhtml→htmとか適当に変えればいいんだろうけど。
- 591 名前:nobodyさん mailto:sage [03/11/14 17:52 ID:???]
- このスレって二つの話題が流れてるんだが。
・flockが使えない環境ではどうしてる? ・ロックの有効性はその方法でなく、ロックを組み込む場所が大事。壊れる原因の大半は誤った使い方によるものなので、ありがちな落とし穴の再検証をしよう。 後者をよく理解してない初心者・中級者が、「flockで壊れた!flock使えねー」とわめいて、前者と後者をまぜこぜにして語って、スレが荒れるのが常。
- 592 名前:nobodyさん mailto:sage [03/11/14 18:00 ID:???]
- それでわめいてるやつは中級とは言えないだろう
- 593 名前:nobodyさん mailto:sage [03/11/14 18:11 ID:???]
- 1 nobodyさん 02/06/23 10:18 ID:eY2l+Gw1
どんな環境でも使えて、軽くて、頑丈なロックを考えようじゃありません
- 594 名前:nobodyさん mailto:sage [03/11/14 18:32 ID:???]
- >>593
そいつは日本語が初心者なんだよw
- 595 名前:nobodyさん mailto:sage [03/11/14 18:38 ID:???]
- たった今594が1を煽りました。
- 596 名前:nobodyさん mailto:sage [03/11/14 18:55 ID:???]
- さあ、>>1よ щ(゚Д゚щ)カモーン!!
- 597 名前:nobodyさん mailto:sage [03/11/15 08:26 ID:???]
- >>590はどうなの?
- 598 名前:nobodyさん mailto:sage [03/11/16 17:30 ID:???]
- 横レスすまんが、MySQLでも突っ込んでおけば、lockはぜんぶDBが
やってくれるやん・・・・・・・・ってのはだめなの? あくまでOSにLockさせないとあかん?
- 599 名前:nobodyさん mailto:sage [03/11/16 17:34 ID:???]
- はいはい、あっち行ってね
- 600 名前:nobodyさん mailto:sage [03/11/16 21:35 ID:???]
- >>598
どうしてそうやって意地でも議論をループさせようとしますか?
- 601 名前:nobodyさん mailto:sage [03/11/17 02:04 ID:???]
- あーごめん。実用の話じゃなくて、神学論争だったのね。
空気よめなかった。すまそ。
- 602 名前:nobodyさん mailto:sage [03/11/17 02:16 ID:???]
- >>601
ていうか DB 使えるならその方がいいし、既に過去レスで全く同じやりとりが何度も出てるし。
- 603 名前:nobodyさん mailto:sage [03/11/18 14:37 ID:???]
- >>601
釣れますか?
- 604 名前:nobodyさん mailto:sage [03/11/18 17:29 ID:???]
- たとえば解析なしのアクセスカウンターにSQL使ってるのを俺は見た事ないな
俺が見た事ないだけかもしれないが
- 605 名前:nobodyさん mailto:sage [03/11/18 22:15 ID:???]
- >>604 大規模サイトだと解析前提だからDBだな。そのほうが楽だし。
個人サイトならカウンタCGIを置くだけでしょ。壊れても問題ないし。 どしてもというなら、セマフォ管理するプロセスを立ち上げといて それ使うって手もあるのかもしれんがそれならDB使うよ。 OSのファイルロックはアトミックじゃないっす。ソラリスでもそう。 マルチアクセス前提のファイルシステムもあるが、民生用じゃないな。
- 606 名前:nobodyさん mailto:sage [03/11/21 00:36 ID:???]
- >>605
大規模サイトが、アクセスカウンターで解析するか? ふつー、Webサーバのアクセスログを解析するだろ。 > OSのファイルロックはアトミックじゃないっす。ソラリスでもそう。 お前の使い方がヘボなだけ。
- 607 名前:nobodyさん mailto:sage [03/11/21 01:22 ID:???]
- >>606 ログ解析だけで済めば世の中楽だよなー
- 608 名前:nobodyさん mailto:sage [03/11/21 01:56 ID:???]
- 607だけだとあおりみたいだから、いちおー。
確かに大規模サイトにはカウンタはないな。でもユーザーごとにレスポンスを 細かく制御すると、リアルタイムなユーザー管理いるからどうしてもDB。 ログ解析だけだとマーケティングデータしか出てこない。インタラクティブ リアルタイムにそれ使わないと意味なしな。 静的なサイトでページビューだけでいいならログだけでいいけど、それじゃ このスレの話題ずれる。 ちなみに俺はDB使わない程度のサイトならservletでロック処理。
- 609 名前:nobodyさん mailto:sage [03/11/21 02:13 ID:???]
- >>608
スレタイを何度も声を出してよく読んでから発言した方が良いのでは? どう考えてもあなたのレスはどれもこのスレにはお呼びでないと思うのですが?
- 610 名前:nobodyさん mailto:sage [03/11/21 02:23 ID:???]
- >>609 あーすまん。607はあんまり口だすつもりなかったんだが
このスレには、人のことを「ヘボ」としか言わないやつがいて それがどうもしゃくに障ったんでな。Perlの話しなくてスマソ。
- 611 名前:nobodyさん mailto:sage [03/11/22 00:21 ID:???]
- >>608
Webアプリなら自前でログ持つ、バグ対応すること考えれば当たり前。 「ソラリス」なんて呼ぶ奴が「OSのファイルロックはアトミックじゃないっす」といった時は 使い方間違ってる確率99.9999%
- 612 名前:nobodyさん mailto:sage [03/11/23 05:00 ID:???]
- 「そらりす」って読んでた(;´Д`)アヒャ
- 613 名前:nobodyさん mailto:sage [03/11/23 05:24 ID:???]
- >>612
いや、その読み方で合ってるし。
- 614 名前:nobodyさん mailto:sage [03/11/23 05:41 ID:???]
- ところでDBMSで使ってるロック機構ってのは具体的にどんな処理なんでしょうか
単純に思いつくのはキューですが・・・ やっぱデーモンみたいな別プロセスに一括一元管理させるのが安全っちゃ安全ですよね?
- 615 名前:nobodyさん mailto:sage [03/12/04 07:40 ID:???]
- ここは進行遅いですね。
結局、実用に耐えるファイルロックはどれなのか スクリプト例でまとめて欲しい。おねがいエロイヒト。
- 616 名前:nobodyさん mailto:sage [03/12/04 11:19 ID:???]
- >>10,>>12
- 617 名前:nobodyさん mailto:sage [03/12/13 19:02 ID:???]
- 昨日新しいファイルロック法思いついたんだけど寝て起きたら忘れてた
- 618 名前:nobodyさん mailto:sage [03/12/13 19:54 ID:???]
- 21世紀のファイルロックなんだろうな?
- 619 名前:nobodyさん mailto:sage [03/12/15 12:22 ID:???]
- WinFS は SQLserver ベースになるそうだから
ファイルロックなんだかDBロックなんだかわからんような あやしげなロックが提供されるんじゃないのか
- 620 名前:nobodyさん mailto:sage [03/12/15 19:16 ID:???]
- Windowsはレジストリロックが使えます。
排他処理中はキーが書き込まれます。
- 621 名前:nobodyさん mailto:sage [03/12/19 21:19 ID:???]
- 今まで、flockが使えないと思ってたんだが、実は使えた!
ってこと無いですか?
- 622 名前:nobodyさん mailto:sage [03/12/19 23:28 ID:???]
- ありませんね
あぁ、知識が足りなくて自分は使えないと? やっぱりありませんね
- 623 名前:nobodyさん mailto:sage [03/12/20 02:36 ID:???]
- $fp = fopen("test.txt", "a+");
if(!flock($fp, LOCK_EX)) { fclose($fp); echo "ns"; } echo "ok"; これでいい?
- 624 名前:nobodyさん mailto:sage [03/12/20 02:38 ID:???]
- windows環境で使えないと思ったけど普通に使えることに気が付いてびっくり。
つーかヘルプに書いてあった。
- 625 名前:nobodyさん [03/12/21 05:04 ID:FyNOPbG5]
- きょうび、自作Perlスクリプトを置けるのに、flockが使えないISPなりレンタルサーバなんて、あるの?
- 626 名前:nobodyさん mailto:sage [03/12/21 16:43 ID:???]
- yahoo
- 627 名前:nobodyさん mailto:sage [04/01/08 00:54 ID:???]
- NiftyとかIswebとか使えるけど掛かるかどうかは保証しないとか言ってなかったっけ。
多分既出の話。
- 628 名前:nobodyさん mailto:sage [04/01/18 18:15 ID:???]
- 俺も需要がなくなってしまった。
ブックマークから外してしまおうかな。。
- 629 名前:nobodyさん mailto:sage [04/01/18 19:34 ID:???]
- ひととおりネタは出尽くしたからもう外していいと思うよ。
- 630 名前:nobodyさん mailto:sage [04/01/18 20:27 ID:???]
- でも、技術や発想的には応用が利くというかあれなので勿体無い気もする。
いままでありがとう。
- 631 名前:nobodyさん mailto:sage [04/01/19 01:52 ID:???]
- テンプレが見たいなぁ、でも2スレまでいかんだろうなぁ。
- 632 名前:nobodyさん mailto:sage [04/03/11 20:28 ID:???]
- 久しぶりに着ますた。dat落ちしてなくてよかた。
ネタが尽きたところで脱線したいんですが、 includeしたりするファイルはflockの必要が無いことを前提としているんですかね。 書き換えや追記などを行うファイルに対し、 includeやrequireしたりするのはナンセンスということで合ってますか?
- 633 名前:nobodyさん mailto:sage [04/03/12 15:23 ID:???]
- それは…
実行するperlスクリプト本体にflockの必要があるか、という話と同じなんじゃないかと
- 634 名前:nobodyさん mailto:sage [04/03/12 15:32 ID:???]
- perl コマンド本体に flock する必要はありますか?
- 635 名前:nobodyさん mailto:sage [04/03/12 23:11 ID:???]
- そういやperlメインのスレですね。スマソ。
PHPにおけるincludeやrequireは単にプログラムの記述されたファイルだけでなく、 HTML、PHP複合型やtxtまで読み込めるわけです。 そういった意味での質問です。
- 636 名前:nobodyさん mailto:sage [04/03/14 16:47 ID:???]
- >>424
歯痛か!
- 637 名前:nobodyさん mailto:sage [04/03/15 12:04 ID:???]
- >>635
php でも perl SSI でも何でもいいんだけど、ロックが重要になるのは基本的に、 ファイルを書き換えるプロセスが複数存在して競合する場合、つまり A:----->読み込み------->処理-------->書き出し--------------------- B:------------------->読み込み------->処理-------->書き出し------- のようなケースね。 ロックしないとマジでファイルが壊れたり情報が失われたりする。 これに対して include や require って、 読み込みオンリーで書き換えが有り得ないという前提なので、 上記のような書き込みの競合に参加しないわけで、 そういう意味ではロックの必要性が薄い。 (全く必要性が無いわけじゃないが、ほとんどの場合無視できる)
- 638 名前:nobodyさん mailto:sage [04/03/15 16:15 ID:???]
- 共有ロックのLOCK_SHってのがあるんですが、
厳密に言えばロックの必要性があることを示しているんですよね。
- 639 名前:nobodyさん mailto:sage [04/03/15 16:44 ID:???]
- ロック「してもいい」ってだけで、「必要」かというとそうでもないんじゃない?
- 640 名前:nobodyさん mailto:sage [04/03/15 16:44 ID:???]
- ていうか、ロックしてみたところで、書き換えようと思えばできるわけで。
- 641 名前:nobodyさん mailto:sage [04/03/15 18:08 ID:???]
- perl は最初に一括コンパイルするからいいけど、
sh ってスクリプトを一行読み込んで実行してを繰り返すから、 実行途中にスクリプトを書き換えると結構悲惨なことになったりするよな。
- 642 名前:nobodyさん mailto:sage [04/03/17 13:37 ID:???]
- rename使ってファイルロックかけるモジュール作って大ハマリしました。
どうもOSによっては、ファイルシステムの情報取得にタイムラグがあるようで、 renameかけても、OSが保持するファイル情報が即座に更新されないために、 同じ元ファイル名からのrenameが成功してしまうことがありました。 より正確にrename形式でファイルロックをかけるには、 rename後に若干のタイムラグを置いて、rename後のファイルの存在チェックが通れば ロック成功と考えた方がいいですね。 ちなみに、WinXP+NTFSの組み合わせでそれらの現象がありました。 Linuxだったりすると、こういう現象は出てきますでしょうか?
- 643 名前:nobodyさん mailto:sage [04/03/17 16:25 ID:???]
- んなバカな。
何か間違っている。
- 644 名前:nobodyさん mailto:sage [04/03/17 18:02 ID:???]
- >>642
君が作ったのを晒してくれないか
- 645 名前:nobodyさん mailto:sage [04/03/18 13:24 ID:???]
- >>644
了解です。 ttp://www.mindcompass.sfcgi.com/misc/LOCK.pm.txt
- 646 名前:nobodyさん mailto:sage [04/03/19 13:53 ID:???]
- とりあえずmkdirやrenameを実行した後
仕方なく-dや-eをしなさい。
- 647 名前:642 mailto:sage [04/03/19 16:28 ID:???]
- >>646
その辺(ファイル操作後の存在チェック)は仕方なく実装してます。 同一プロセスで、同じファイルからのrenameコマンドを連続して実行すると、2回目は失敗(これが通常動作)するので、 他プロセスでのファイル操作の結果が反映されるのが遅いらしい。
- 648 名前:nobodyさん mailto:sage [04/03/19 16:33 ID:???]
- -d or mkdirじゃなくてmkdir or !-d
- 649 名前:nobodyさん [04/03/29 10:00 ID:WLF8C9h8]
- ログに「This is a test1.」と10万回書くCGIと「This is a test2.」と10万回書くCGIを二つ同時起動させてみた。
ログにはきちんと20万行書かれてた。 for ($i = 0; $i < 10000; $i++) { open (DATA, ">>$file"); flock (DATA, 2); print DATA $str; close DATA; } こういうのじゃ、そのOSでflockが使用可能かって言う確認にはならないのですか? ちなみに、環境はWin2KとActivePerl5.6.1で試しましたが。
- 650 名前:nobodyさん mailto:sage [04/03/29 17:51 ID:???]
- >>649
そもそも flock が使用不能なら呼び出した時点で実装されてないって怒られます。 実用的に使用可能か、という意味なら実際に試してみる価値があるかもしれません。 ただし、自分の想定している条件に近くないとあまり意味がないと思います。
- 651 名前:nobodyさん mailto:sage [04/03/31 01:14 ID:???]
- 子プロセスを10個forkしてプロセス一つで1000回カウンタを回すスクリプト使ってる。
perlで壊れないロックはflock()だけだった。
- 652 名前:nobodyさん mailto:sage [04/03/31 05:45 ID:???]
- 2chのロックはchmod()でやってるらしいね。
- 653 名前:nobodyさん mailto:sage [04/03/31 07:07 ID:???]
- chmod()ではアトミックに書けないように思えるけど、
どんなんだろう。
- 654 名前:nobodyさん mailto:sage [04/03/31 12:43 ID:???]
- chmod() でっていうのは具体的にどうやるの?
- 655 名前:nobodyさん mailto:sage [04/03/31 12:54 ID:???]
- >>654
chmodがどういうものかわからないの?
- 656 名前:nobodyさん mailto:sage [04/03/31 13:50 ID:???]
- 時々書き込みしてもインデックスの数字が増えないことがあるが
ロックに失敗してると考えると納得できる話だな > 2chがchmodでロック
- 657 名前:nobodyさん mailto:sage [04/03/31 15:11 ID:???]
- >>655
あなたはわかっているの?
- 658 名前:nobodyさん mailto:sage [04/03/31 18:13 ID:???]
- 運用情報のbbs.cgi再開発スレにチラッと載ってる。
- 659 名前:nobodyさん mailto:sage [04/03/31 21:42 ID:???]
- >>658
1000ストップを確実にする方法の議論に見えました。
- 660 名前:nobodyさん mailto:sage [04/03/31 23:37 ID:???]
- なんかflockを使いたくない議論してるよね。
どうせアトミックじゃないのなら 1000の書き込み後にchmodして 1001はクライアントで描画 dat落ち時にはdatに1001を書く、 とか適当にやれば1030くらいで止まるんじゃない? ダサいけど。
- 661 名前:nobodyさん mailto:sage [04/04/10 18:40 ID:???]
- 余分な処理を追加して確実にするより1から書き直したほうがいいんじゃないかな。
運用の奴ら全員で1台のディスプレイを囲んで。 オンラインでの議論なんて無駄無駄。
- 662 名前:nobodyさん mailto:sage [04/04/16 01:00 ID:???]
- filerock
- 663 名前:nobodyさん mailto:sage [04/04/19 09:45 ID:???]
- ロック状態の情報をロックファイルの中に書いておこうと思ったら、
ロックファイルをファイルロックしなければならなくなった。orz
- 664 名前:nobodyさん mailto:sage [04/04/21 07:50 ID:???]
- ロックファイルをファイルロックした情報をロックファイルに書くことはしないんでしょう。
- 665 名前:nobodyさん mailto:sage [04/04/21 12:24 ID:???]
- ロックファイルは存在が全てです。
よくある流行歌の「君がいるだけで」というフレーズが言い当てています。
- 666 名前:nobodyさん mailto:sage [04/04/23 14:39 ID:???]
- たとえばーきみがいるだーけでこころがーろっくされるーことー
- 667 名前:nobodyさん mailto:sage [04/04/26 01:30 ID:???]
- renameするロックはうまく書けば完璧かなと思ったが、外からの干渉に弱い気がする。
- 668 名前:nobodyさん mailto:sage [04/04/26 01:31 ID:???]
- 干渉とは?
- 669 名前:nobodyさん mailto:sage [04/04/27 11:45 ID:???]
- >>668
1分でレスしてきた君のためにGTO神書き換えのレスで返そうかと思ったけど、難しいのでやめた。 例えば、/path/to/dataというパスのファイルをファイルロック中は/path/to/data.lockとするぷろぐらみゅがあるとして、 その横で while(1) { open(F, '>/path/to/data'); close(F); open(F, '>/path/to/data.lock'); close(F); } なんてことされたらたまんねぇと。 まあ、適切にパーミッションを設定すれば問題ないのだが、 私はファイルは0666、ディレクトリは0777でも問題ないことを信条としてるのであれかなと。
- 670 名前:nobodyさん mailto:sage [04/04/27 13:29 ID:???]
- >>669
それは、前提が間違ってると思う。 「みなさん、ロックのためのリソースの○○はこうこうこういうふうに使いましょう」 っていう規約をみんながきちんと守ってる、っていう前提で設計しないと。 そんなこと言ったら、「ハカーが○○してきたら」とか「電源落されたら」とか 「スーパーユーザに○○されたら」とか考え出したら何もできないと思う。
- 671 名前:nobodyさん mailto:sage [04/04/27 13:54 ID:???]
- >>670
ハァ?お前は K E N T か? アップローダーを例に取るとサーバーとユーザーの設定次第で pc5.2ch.net/test/read.cgi/hp/1076940865/888n のような事も起こってしまうわけで。 専用のサーバーを使うなら>>670のような設計で構わないと思うけど、 こっちは共用向け、大量配布だからな。そういうわけにはいかんのよ。
- 672 名前:nobodyさん mailto:sage [04/04/27 14:22 ID:???]
- >>671
「 K E N T 」というのは何だか知らないけど、そういうことなら納得です。 # でも >>667 のようなレスからそんな事情は推し測れないよ。
- 673 名前:nobodyさん mailto:sage [04/04/27 17:59 ID:???]
- んー、でもやっぱ正しく安全に使える人が正しく安全に使える鯖で使って下さいで良い気がするんだけど。
初回起動時にランダムな文字列のディレクトリ名やファイル名をスクリプトが自分自身の中に保存して、 それを使い rename()(または mkdir() や open() で作成)してそれをベースとするとか。 ディレクトリ内の一覧表示とかに弱いし総当りもあるし完璧では無いけど。
- 674 名前:nobodyさん mailto:sage [04/04/27 18:00 ID:???]
- と思ったが666なら外からスクリプト自体すら書き換え可能になるのか。
なんてこったい。
- 675 名前:nobodyさん mailto:sage [04/04/27 20:43 ID:???]
- 書き替えられるならやってみろ。外からな。
- 676 名前:nobodyさん mailto:sage [04/04/28 01:00 ID:???]
- 書き換えられないんなら良いんじゃない。
- 677 名前:nobodyさん mailto:sage [04/04/28 01:04 ID:???]
- >>675
あんたのサイトの書き込み可能は無敵でうらやましいよ
|

|