自作CGIを評価するスレ (672レス)
自作CGIを評価するスレ http://medaka.5ch.io/test/read.cgi/php/1049514428/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
394: nobodyさん [sage] 03/06/25 00:00 ID:??? require './my_flock.pl'; while (1) { while ( not defined ($lock = &my_flock()) ) {}; open (IN, "./count.txt"); $data = <IN>; close (IN); &my_funlock($lock); print ++$data. "\n"; while ( not defined ($lock = &my_flock()) ) {}; open (OUT, ">./count.txt"); print OUT $data. "\n"; close (OUT); &my_funlock($lock); if ($data >= 10000) { last; } } >>371のその辺のファイルロックを別ファイルに取って呼び出してる。 これを、二つのプロセスで実行してみろ。 無事に10000までカウントなんぞできんぞ。 http://medaka.5ch.io/test/read.cgi/php/1049514428/394
395: 374 [sage] 03/06/25 00:21 ID:??? >>394 まともに使えないならいっそ使わないほうが・・・ http://medaka.5ch.io/test/read.cgi/php/1049514428/395
396: nobodyさん [sage] 03/06/25 00:39 ID:??? >>395 はぁ? 全体に一度だけかけろとか言うのか? それでも壊れる。 何がまともに使えないだよ・・・ ルーチン呼び出すのに使えるも使えないもないだろヴォケ。 文句言う前に試せやハゲ。 試して、壊れなかったら文句言いにこいや。 http://medaka.5ch.io/test/read.cgi/php/1049514428/396
397: 374 [sage] 03/06/25 00:47 ID:??? ルーチンをまともに使えないヤシが晒されるスレはここでつか? http://medaka.5ch.io/test/read.cgi/php/1049514428/397
398: nobodyさん [sage] 03/06/25 00:57 ID:??? >>397 だから。 試せってよ・・・。 試しもしないで、使えてねーとか、使い方悪いとか。 そんな事言われても、説得力ねーっちゅーの。 こういう使い方したらファイル壊れないとか、 このタイミングでルーチン呼び出したら大丈夫だとか、 まー試しもしないで語ってるヤツに、 ロクな答えなんて返ってきそうにないけどな。 http://medaka.5ch.io/test/read.cgi/php/1049514428/398
399: 371 [] 03/06/25 00:59 ID:Q5i43+wA >>396 > 全体に一度だけかけろとか言うのか? だってそうしないとカウントが飛んじゃうでしょ。 > 試して、壊れなかったら文句言いにこいや。 一度に5プロセス動かして1000までやってみたけど壊れないね。 FreeBSD2.2.2 + Perl5.6.0だけど。 OS何使ってて壊れるの? > 396 http://medaka.5ch.io/test/read.cgi/php/1049514428/399
400: 371 [] 03/06/25 01:03 ID:Q5i43+wA プロセスを7つに増やしてテスト中。 時々ロックファイルが消えるな・・・。renameしかしてないはずなので、 ファイルシステムのバグか? でもデータが壊れるということは今のところない模様。テスト続行中。 http://medaka.5ch.io/test/read.cgi/php/1049514428/400
401: 371 [] 03/06/25 01:13 ID:Q5i43+wA FreeBSD2.2.8 + Perl 5.6.0でも実験したところ、20000件超えてるけど、特に問題なし。 FreeBSD2.2.2の方も、10000件行ってエラーなし。 合計30000件実験してみたけど衝突は起こってない模様(プロセスの譲り合いで片方のプロセスが ブロックする現象は見られたが)。 単にrenameシステムコールが衝突するようなファイルシステムを持つOSを使ってるだけ とか、そういうオチじゃなくて?>>398 http://medaka.5ch.io/test/read.cgi/php/1049514428/401
402: 371 [sage] 03/06/25 01:22 ID:??? ファイルが消える現象は、ロックファイルをディレクトリにすることで回避 # mkdir lockdir/lockfile で、20プロセス同時起動で、30000件やってみたけど、全く問題なし。 さすがに30000回連続で20プロセスが同時に1つのファイルにアクセス する状況はありえないだろうから、少なくともウチの環境上では きちんとロック機構が機能してると思われる。 で、たった2プロセス同時起動で10000件持たないファイルシステムを 持つ環境がどんな環境なのかとても気になるので早く教えてください>>398 あなたの言う条件↓は満たしましたよ。 > 文句言う前に試せやハゲ。 > 試して、壊れなかったら文句言いにこいや。 http://medaka.5ch.io/test/read.cgi/php/1049514428/402
403: nobodyさん [sage] 03/06/25 01:30 ID:??? おっと、ご苦労さん。 マジで? ファイル壊れない? こっちの環境は、Win2kだけど。 > 単にrenameシステムコールが衝突するようなファイルシステムを持つOSを使ってるだけ んな訳ない。 2kで、そんなバグ聞いた事ない。 ずっとテスト環境は2kだったからなぁ〜。 とりあえず、こっちもVineの環境があるから、そっちでも試す。 >で、たった2プロセス同時起動で10000件持たないファイルシステムを >持つ環境がどんな環境なのかとても気になるので早く教えてください>>398 煽りですか。 あんた、一言多いね。 http://medaka.5ch.io/test/read.cgi/php/1049514428/403
404: 371 [sage] 03/06/25 01:49 ID:??? > こっちの環境は、Win2kだけど。 多分そのせいじゃないかなぁ。ファイルシステム何になってます? こっちは今のところ30プロセス同時起動で30万件ノンストップで突破してるので、 スクリプト自体に問題があるとは思えない。 まぁ、このルーチンはrenameの堅牢性に頼ってるので、その点において汎用性は 薄いということを証明する形にはなったかも。 > 2kで、そんなバグ聞いた事ない。 1秒間に同じファイルを数十回renameする必要性ってあまりないからなぁ。 renameのファイルの取り合いって普通の状況だとまず起こりえないし。 ソース読んだら分かると思うけど、renameの空振り以外に原因は考えにくい ので、再現性あるなら追試してレポート出してみたら? http://medaka.5ch.io/test/read.cgi/php/1049514428/404
405: nobodyさん [sage] 03/06/25 02:14 ID:??? >>404 ファイルシステムは、もちろんNTFS Vineで試してみた。 たしかに、2kの時は途中ファイルが壊れてカウントが1に戻ったりしたけど、 Vineはそんな事なかった。 ・・・が、おかしい。 3つのプロセスで動かしたが、ログがおかしい。 同じ数字のカウントをする場面がある。 3つのプロセスでカウントしていったら、 同じ数字がカウントのログとして出るのはおかしいでしょ? そっちでは、ちゃんとカウントしていってる? http://medaka.5ch.io/test/read.cgi/php/1049514428/405
406: 371 [sage] 03/06/25 02:28 ID:??? >>405 >>394のソース直した?部分的でなく、全体をロックで囲まないと誤動作するよ。 print文の直上直下にあるunlockとlockの2行を外せばうまく行くと思う。 http://medaka.5ch.io/test/read.cgi/php/1049514428/406
407: nobodyさん [sage] 03/06/25 02:44 ID:??? >>406 あ・・・悪い。 修正してなかった。 ちゃんと動いてる。 もっと沢山のプロセスと、もっと沢山のループで試したかったけど、 Vineが入ってるPCのCPUが弱いんでやめた。 なんだ・・・今回の実験で、2kがいかに糞なのかが証明されたのか・・・? 結果は、壊れないファイルロックが存在したって事か? ・・・俺が、間違ってますた。 スマソ http://medaka.5ch.io/test/read.cgi/php/1049514428/407
408: 371 [sage] 03/06/25 11:01 ID:??? >>407 > 結果は、壊れないファイルロックが存在したって事か? 昨日、あのまま30プロセス同時起動のまま寝て、今朝見たら400万件を 突破してました。もちろんノンストップで。 30プロセスが400万回連続で殺到しても平気だということなんで、 少なくともウチの環境では、ほぼ「絶対に壊れないロック機構」と言い切って 差し支えないと思う。 どうでもいいけど、このテストスクリプトだと、count.txtを書き込みオープンした 瞬間にプロセスが落ちるとカウンタリセットされるよね。堅牢なスクリプトを作ろうと 思ったらそこまで気を遣う必要があるかも。 >>377 flockに書き換えて同じ事やってみたけど、20プロセス10万件で壊れずに 行ってます。やっぱりOSの問題か、flock over networkが原因ではないかと。 スレ違いなようなので、この辺で。 http://medaka.5ch.io/test/read.cgi/php/1049514428/408
409: nobodyさん [sage] 03/06/25 14:12 ID:??? 結論的には何が一番? http://medaka.5ch.io/test/read.cgi/php/1049514428/409
410: 368 [sage] 03/06/25 18:02 ID:??? >>393さんがおっしゃってる通りたしかにスレ違いですが、 とても興味深い話題をありがとうございます。 >>402さんがおっしゃってることを試す価値はありそうなので、 とりあえずファイルを使うロックから、 ディレクトリを使うロックに変えてみたいと思います。 http://medaka.5ch.io/test/read.cgi/php/1049514428/410
411: nobodyさん [sage] 03/06/25 22:47 ID:??? >>410 ないよ。flockが一番。 http://medaka.5ch.io/test/read.cgi/php/1049514428/411
412: nobodyさん [sage ] 03/06/25 22:57 ID:??? >>411 NFS越しでも? http://medaka.5ch.io/test/read.cgi/php/1049514428/412
413: nobodyさん [] 03/06/26 06:18 ID:EBHZ+AEW . http://medaka.5ch.io/test/read.cgi/php/1049514428/413
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 259 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.475s*