1 名前:nobodyさん [02/06/23 10:18 ID:eY2l+Gw1] どんな環境でも使えて、軽くて、頑丈なロックを考えようじゃありません
367 名前:nobodyさん mailto:sage [03/04/21 21:46 ID:???] >>364 駄目じゃん
368 名前:nobodyさん mailto:sage [03/04/21 22:35 ID:???] >>367 たかが趣味でやってるCGIのデータなんだから気にしすぎ 壊れたらどうやって対処するかスキルを身に付けるいいチャンス
369 名前:nobodyさん mailto:sage [03/04/21 23:09 ID:???] >>368 そういう誤魔化し方は好きじゃないな
370 名前:nobodyさん mailto:sage [03/04/21 23:33 ID:???] 書いてる途中で死んでもジャーナルファイルシステムの恩恵にあずかれたりしない?
371 名前:nobodyさん mailto:sage [03/04/21 23:54 ID:???] どんなことしても、壊れる物は壊れる。 イヤなら定期的にバックアップ取る処理を組め。
372 名前:nobodyさん mailto:sage [03/04/22 14:19 ID:???] 突然死するトランザクションは救えないが、DBが壊れないようにすることは可能。
373 名前:nobodyさん mailto:sage [03/04/22 20:26 ID:???] これだけ粘着的にこだわって、実は IDE で RAID も組んでません、とかいうオチはないよな?
374 名前:nobodyさん mailto:sage [03/04/22 20:41 ID:???] 妥協しないぐらい食材にこだわって、実は化学調味料ドバドバ入れちゃうみたいな?
375 名前:っていうか mailto:sage [03/04/24 13:03 ID:???] 別ファイルに書き込んで mv これ定説
376 名前:山崎渉 mailto:(^^) [03/05/22 02:08 ID:???] ━―━―━―━―━―━―━―━―━[JR山崎駅(^^)]━―━―━―━―━―━―━―━―━―
377 名前:nobodyさん mailto:sage [03/05/22 07:17 ID:???] 厨房な質問で悪いんですが、mkdirを使ったファイルロックってこういうことですか? if (opendir(LOCK, "lock")) { closedir(LOCK); rmdir("lock"); # 処理 mkdir("lock"); }
378 名前:nobodyさん [03/05/22 09:34 ID:sAd9/kNT] mkdir("lock") じゃなくて mkdir("lock", 600) でした。
379 名前:nobodyさん mailto:sage [03/05/22 10:08 ID:???] >>378 違う。 if (mkdir ("lock", 755)) { (処理) } こう。 mkdirは、ディレクトリの作成に成功すると真が、 失敗すると偽が返ってくる。
380 名前:nobodyさん [03/05/22 13:35 ID:2b2Zl4vP] >>379 ?それだけでいいんでふか?
381 名前:nobodyさん mailto:a [03/05/22 13:46 ID:???] 20代OLです毎日上司のセクハラや通勤電車での痴漢でストレスがたまっていた そのときにネットで見つけたアダルトDVDショップ以前からオナニー用にDVD が欲しかったのですぐ注文しました、とても安くてびっくりしましたが次の日には もう届きました私が買ったのは、オナニー、レズ、レイプです毎日オナニーしてま す。 www.net-de-dvd.com/
382 名前:nobodyさん mailto:sage [03/05/22 13:53 ID:???] >>380 ttp://homepage1.nifty.com/glass/tom_neko/web/web_04.html このへんでも参考に
383 名前:380 じゃないけど mailto:sage [03/05/22 15:06 ID:???] >>382 激しく参考になりますた。謝謝。 ところで flock() が使えないところで eval{ if(!(flock(FH, 2))){ &function; } }; とした場合ちゃんとサブルチンに逝ってくれますか? false は返ってくるんでしょうか?
384 名前:nobodyさん [03/05/22 15:40 ID:Mzhw6+0o] >>382 サンクスコ(・∀・)
385 名前:nobodyさん [03/05/23 13:24 ID:ORCLTuvq] ロックする時にmkdirでディレクトリを作って、 アンロックする時にrmdirでディレクトリ削除ってことですよね? >>382 のサイト見てないけど…。
386 名前:nobodyさん mailto:sage [03/05/23 13:28 ID:???] >>385 見ろ。
387 名前:山崎渉 mailto:(^^) [03/05/28 17:07 ID:???] ∧_∧ ピュ.ー ( ^^ ) <これからも僕を応援して下さいね(^^)。 =〔~∪ ̄ ̄〕 = ◎――◎ 山崎渉
388 名前:nobodyさん mailto:hage [03/05/28 18:03 ID:???] age
389 名前:nobodyさん [03/05/31 21:04 ID:n0OtuFEQ] ロックされてるかどうか調べるにはどうしたらいい? 他のプロセスでロックしてるファイルにアクセスしてもロックがすぐ終っちゃうような…。 どうすれバインダー。
390 名前:動画直リン [03/05/31 21:10 ID:1EAhrEiJ] homepage.mac.com/hitomi18/
391 名前:nobodyさん mailto:sage [03/05/31 21:44 ID:???] >>389 激しくロックの方法に依ると思うんだが。
392 名前:389 [03/05/31 21:45 ID:n0OtuFEQ] 全般的にできるのはないの?
393 名前:nobodyさん [03/05/31 22:08 ID:nC5SP5sD] >>392 ロック中に sleep 60;
394 名前:nobodyさん mailto:sage [03/05/31 23:30 ID:???] 弱いかな? package FileLock; use IO::File; my $CAT= '/bin/cat'; sub open_w { my $filename= shift; mkdir($filename)unless -d $filename; my $base= sprintf("%s.%s.",time,$$); my $cnt= 0; $cnt++ while(-f "$filename/$base$cnt"); return IO::File->new("$filename/$base$cnt",'>>'); } sub open_r { my $filename= shift; return IO::File->new("|$CAT $filename/*"); } 1;
395 名前:nobodyさん [03/06/01 04:57 ID:Hll/ZLYf] >>393 おぉ!蟻がとう。
396 名前:nobodyさん mailto:sage [03/06/01 12:29 ID:???] >>393 禿げ藁
397 名前:nobodyさん mailto:sage [03/06/01 13:22 ID:???] >>394 駄目ロック。これ使うならロックしなくていい。
398 名前:nobodyさん mailto:sage [03/06/01 21:54 ID:???] アンケートみたいに読み出しが少なくて、書き込みが多いときに flockと組み合わせて(かつcron回してファイルをまとめつつ) 使ってたんだけど。。。駄目かぁ(´Д`;)
399 名前:nobodyさん mailto:sage [03/06/02 00:36 ID:???] >>398 > mkdir($filename)unless -d $filename; 意味なし。複数のプロセスでunless -d $filenameが成立する可能性がある。 排他制御するにはアトミックにやらないと駄目。 排他制御に強い/弱いは無い。正しいか駄目のどちらか一方、わずかでも可能性があれば駄目ロック。
400 名前:nobodyさん [03/06/02 09:59 ID:7y9vki3n] そういえばみんななんで、 --$retry <= 0 なんてやってるの? $retry-- じゃまずいの?
401 名前:nobodyさん [03/06/02 10:09 ID:Ixodm31c] みてね♪ www1.free-city.net/home/s-rf9/page006.html
402 名前:nobodyさん [03/06/02 10:20 ID:sw1UrgM5] ∧_∧∩ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ( ´∀`)/< 先生もろDVDはどこですか? _ / / / \___________ \⊂ノ ̄ ̄ ̄ ̄\ ||\ \ ||\|| ̄ ̄ ̄ ̄ ̄|| || || ̄ ̄ ̄ ̄ ̄|| ∧_∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ .|| || (´Д` ) < www.dvd01.hamstar.jp だ! / \ \___________ || || || || __ //_ //___ / // // / /  ̄  ̄ // || ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|| || || ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|| || || 教卓 || || || ||
403 名前:nobodyさん mailto:sage [03/06/02 10:29 ID:???] >>400 デクリメントの事言ってるのか? 前置きと、後置きでは、動作が違う。 そして、スレ違い。
404 名前:nobodyさん [03/06/02 10:35 ID:azLkJHuz] >>403 いやいや、なんで<=を使ってるかが知りたいの? ifって偽だと実行しないでしょ? $retryは最終的に0になるわけだから、<=は必要ないだろ。 ってかスレ違いって分かってるので、逝ってきます。
405 名前:nobodyさん [03/06/02 10:39 ID:7y9vki3n] 良く見たら答えが分かった。馬鹿か俺。 やっぱり逝くしかないな…。
406 名前:直リン [03/06/02 11:10 ID:mGHfwiJV] homepage.mac.com/yuuka20/
407 名前:nobodyさん mailto:sage [03/06/02 11:20 ID:???] >>404-405 0は偽だが、-1は真になる。 上げてる時点で逝ってください( ̄人 ̄)
408 名前:nobodyさん mailto:sage [03/06/02 11:42 ID:???] >>407 でも絶対-1にはならなくない? まだ逝ってないよ、俺。
409 名前:nobodyさん mailto:sage [03/06/02 12:07 ID:???] >>408 いや・・・だからさ・・・ 全体のソース読んでないんで分からないんだけど。 マイナスになる可能性があるかもしれないんでしょ? --$retry <= 0 この条件だと、$retryがもし0だったら・・・ -1 <= 0 こんな判定になるし。 0が入る訳がないソースだったとしても、 ちゃんと条件書いてる方が、見た目分かりやすいってのもある。 そして、スレ違いだから、やっぱ逝くべき。
410 名前:nobodyさん mailto:sage [03/06/02 12:14 ID:???] >>404 > いやいや、なんで<=を使ってるかが知りたいの? ・・・え? 問い掛けられても・・・
411 名前:nobodyさん mailto:sage [03/06/02 12:16 ID:???] >>408 > でも絶対-1にはならなくない? お前プログラマに向いてない。確実に-1になる。わかったら逝け、わからなくても逝け。
412 名前:nobodyさん [03/06/02 12:47 ID:YkiHze2n] >>411 うおっ!キツイ一言だな…。 でもこのスレのヤシらはなんか優しい…。 すっきりしたら逝くから、すっきりさせろYO! なんで-1になるんだ? 粘着房だな…。
413 名前:nobodyさん mailto:sage [03/06/02 13:02 ID:???] >>412 だから・・・・ --$retry <= 0 ↑これだけ見せられて、-1になるか、ならないかって言われても、 分からない訳なのよ。 どのソースみて、言ってる訳? とにかく、その一行を見る限りでは、-1になる可能性はある。 何度も言うようにスレ違いだから、優しいうちに逝っとけ。
414 名前:動画直リン [03/06/02 13:10 ID:mGHfwiJV] homepage.mac.com/hitomi18/
415 名前:nobodyさん mailto:sage [03/06/02 13:14 ID:???] >>413 そういうことね。 上の方のソースやKENTのソース。 おとなしく逝っときます。 スレ違いのことをしつこくスマンカッタ…。
416 名前:nobodyさん mailto:sage [03/06/02 13:43 ID:???] Cプログラマ的にはif (--retry)の方が早い気がする。 気がするであって、気にする奴が本当に気にしなきゃいけない場合はアセンブラで書く。
417 名前:_ mailto:sage [03/06/02 14:38 ID:???] homepage.mac.com/hiroyuki43/moe/jaz01.html
418 名前:_ mailto:sage [03/06/02 16:09 ID:???] homepage.mac.com/hiroyuki43/moe/jaz01.html
419 名前:_ mailto:sage [03/06/02 19:13 ID:???] homepage.mac.com/hiroyuki43/hankaku/hankaku07.html
420 名前:nobodyさん mailto:sage [03/06/03 08:26 ID:???] >>416 おまえも素質ないから早くプログラマから足洗った方がいいぞ。
421 名前:nobodyさん mailto:sage [03/06/17 05:57 ID:???] search.cpan.org/author/MAKOTO/IO-File-flock-0.07/ これって使っても平気ですか?
422 名前:nobodyさん mailto:sage [03/06/22 16:13 ID:???] 房な質問なんですけど、そんな頻繁にデッドロックって起こるものなんでしょうか?
423 名前:nobodyさん mailto:sage [03/07/07 19:32 ID:???] 10 'ファイルの書き込み 20 Open "Text1.txt" For Output As #1 30 Print #1,"Write file." 40 Close #1 ファイルロックのためのtmpファイル作成しようと思ったんですが、 プログラム内で擬似マルチタスクを作成している時といないときがあるので、 flock関数みたいなものがあれば効率が上がると思うのですが、 やはりrename形の方が安全で軽いのでしょうか?
424 名前:なぞなぞ先生 mailto:sage [03/07/08 06:24 ID:???] 排他処理するために必要な国家資格はなぁんだ?
425 名前:nobodyさん mailto:sage [03/07/08 12:02 ID:???] 情報処理
426 名前:nobodyさん mailto:sage [03/07/08 12:12 ID:???] >>424 歯科医師
427 名前:nobodyさん mailto:sage [03/07/08 12:19 ID:???] 国家公務員一級
428 名前:nobodyさん mailto:sage [03/07/08 15:54 ID:???] シスアドだべ。
429 名前:nobodyさん mailto:sage [03/07/08 15:58 ID:???] 公害防止管理者だろ
430 名前:nobodyさん mailto:sage [03/07/09 00:33 ID:???] >>426 司会者?
431 名前:nobodyさん [03/07/10 16:21 ID:QDkm5VXP] 初心者で申し訳ない。 flock使えるサーバなんだけど、書き込み中はロックするっていう 対象のファイルをflockの引数にするのと、別のダミーファイルを flockの引数にするのとあるでしょ。どっちがいいのでつか。
432 名前:nobodyさん mailto:sage [03/07/10 17:46 ID:???] 場合によるっしょ。 処理全体にかけたいなら後者の方が良いかと。
433 名前:nobodyさん mailto:sage [03/07/10 21:42 ID:???] 先生、Webプログラミング界では共有ロックが理解されていません
434 名前:431 mailto:sage [03/07/10 22:35 ID:???] >>432 ありがとん。 >>433 漏れのこと言ってるようでつね。勉強してきまつ。
435 名前:nobodyさん mailto:sage [03/07/11 11:17 ID:???] そりゃステレオタイプだ
436 名前:nobodyさん mailto:sage [03/07/14 17:20 ID:???] >>424 おまいいい加減教えろ!
437 名前:なぞなぞ先生 mailto:sage [03/07/15 06:43 ID:???] OSやSOFTWAREの基本的なことで申し訳ないのですが、 完全に同時にプロセスが発生することはないよね? マルチタスクってのもマルチスレッドってのも基本的に擬似的に行っているもので、 結局は1つのプロセスが司っている処理って聞いたことがあったような。 そうすると、OSがダウンしない限りrename型の排他処理 rename open 処理 close rename は完璧に有効だと思うんだが。 と思ったけど、それを言い始めたらキリが無いかw うーん、、、しかしたまに2chで1001を超えるのは何でだろう。 ロック解除してから1001のチェックをしているのかな。。。 最近うなされて困ってます。変な文&長文すまん。
438 名前:nobodyさん mailto:sage [03/07/15 06:44 ID:???] いかぁん、名前が残ってた!!! 氏のう。。。。
439 名前:山崎 渉 mailto:(^^) [03/07/15 11:08 ID:???] __∧_∧_ |( ^^ )| <寝るぽ(^^) |\⌒⌒⌒\ \ |⌒⌒⌒~| 山崎渉 ~ ̄ ̄ ̄ ̄
440 名前:nobodyさん mailto:sage [03/07/15 19:03 ID:???] >>437 レスが1000を超えるのはdatファイルへの書き込みと、 レスポンス数のチェック(書き込み禁止処理)がアトミックにできないから。 実際には、二つの処理に結構な間があると思う。
441 名前:nobodyさん mailto:sage [03/07/15 22:40 ID:???] ∩ | | ∧_∧ | | / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ( ´ー`)// < 先生! / / | アトミックって何ですか? / /| / \___________ __| | .| | __ \  ̄ ̄ ̄ ̄ ̄ \ ||\ \ ||\|| ̄ ̄ ̄ ̄ ̄ ̄ ̄|| ̄ || || ̄ ̄ ̄ ̄ ̄ ̄ ̄|| .|| ||
442 名前:nobodyさん mailto:sage [03/07/15 23:25 ID:???] 表現がおかしい?(慣れない横文字は使うもんじゃないね 他のプロセスが割り込めない極小時間(ワンステップ)で操作。 にしといてくださいな。
443 名前:nobodyさん mailto:sage [03/07/16 07:27 ID:???] いや、アトミックという言葉は普通に使うと思うぞ ましてやファイルロックの話題ならなおさら
444 名前:437 mailto:sage [03/07/16 08:09 ID:???] その件なのですが、1000のカキコをログに書き込んだら、 ファイルロック中に何らかの処理(たとえば別ファイルにHTML書き出しやHTML化待ちDATリストへの追加) をすれば、"アトミック"は存在しないと思うのですが。 下手な考えスマソ。。。
445 名前:440 mailto:sage [03/07/16 22:09 ID:???] >>444 ああっと、flockが頭にあったので、、 renameが理想的なロックとして動作するとしたら>>437 で可能だと思います。 (OSがlinuxの場合は壊れたりするけど…) 2chとしては、1000で止まらなくても(多少レスが多く付いても)構わないのかも。 (ロックする時間が増える→待ちプロセス数が増える→サーバ負荷が増えるよりは。)
446 名前:437 mailto:sage [03/07/17 00:22 ID:???] >ロックする時間が増える→待ちプロセス数が増える→サーバ負荷が増える 2chみたいな大規模な掲示板だとここが問題なんですね。 ぐっすり眠れそうな気がしました。レスありがとうございました。
447 名前:nobodyさん mailto:sage [03/07/19 14:28 ID:???] 2ch互換スクリプトの場合、スレ立て処理に問題抱えてる場合があるので注意。 スレッドキー(ファイル名)決定と、ファイル作成(書き込み)を別の場所で 行っている事がほとんどなので、同時にスレ立てが発生するとスレッドが 合体する可能性がある。 半年前あたり2chでもちょっと問題になってた。 実際としては2ch以外で問題になることは無いと思うけどね。
448 名前:nobodyさん mailto:sage [03/07/20 07:55 ID:???] >>447 スレアドレス決定とファイル作成を同じスクリプトで行えばオッケー?
449 名前:nobodyさん mailto:sage [03/07/20 09:18 ID:???] >>448 そういうことじゃない。 スクリプトの中でキー決定からファイル作成までの間に いろいろな処理があって、同時スレ立ての一方がファイル作成前に もう一方がそのキーのスレがあるか確認して存在しないと 判断してしまう時差の問題が起こりえるということ。
450 名前:nobodyさん [03/07/26 13:13 ID:GHzBAdl/] flock のロックをしたいんですが、 具体的に何をすれば良いのでしょうか? flock と言う名前のディレクトリを 作って、ロックしたいファイルに 置いとけば良いのでしょうか? すいませんが、まるっきりの初心者ですので、 教えて下さい。
451 名前:nobodyさん mailto:sage [03/07/26 13:24 ID:???] >>450 >>1-449
452 名前:nobodyさん mailto:sage [03/07/26 13:55 ID:???] >>451 ワロタ! でも、イイ!
453 名前:_ mailto:sage [03/07/26 13:55 ID:???] homepage.mac.com/hiroyuki44/
454 名前:nobodyさん mailto:sage [03/07/26 18:00 ID:???] YOU THE☆ROCKは綴りが違いますが、このスレの親戚ですか? flockするファイルのあるディレクトリのパーミッションは任意たんでよいですか? 自分の中で最高の条件を満たすレンタル鯖がflock使えないとかなりへこむ。。。 結局rename型のlockにしてみたんだが、鯖の負荷とか考えたくないなぁ。 ブロードバンド回線開通したら絶対鯖立てたい。 と言う独り言でした。また来週。
455 名前:nobodyさん mailto:sage [03/07/26 22:03 ID:???] やっぱりファイルで何らかのロック処理をした後、 flockも使うのが最強ですかね?
456 名前:nobodyさん mailto:sage [03/07/26 22:40 ID:???] じっさまなら誰もおこらねぇけど、
457 名前:nobodyさん mailto:sage [03/07/27 01:31 ID:???] >>455 ハァ、Webプログラマーってどうして馬鹿ばっか集まるんだ。 排他制御に強い/弱いはない。正しい/駄目のどちらかだ。 駄目なものをいくつ重ねても駄目なものは駄目。正しい方法を複数使う必要はない。
458 名前:nobodyさん mailto:sage [03/07/27 03:14 ID:???] 結論が出てしまったな・・・
459 名前:nobodyさん mailto:sage [03/07/27 09:30 ID:???] ドコ━━━(゚Д゚≡(゚Д゚≡゚Д゚)≡゚Д゚)━━━━!!!!???
460 名前:nobodyさん mailto:sage [03/07/27 20:51 ID:???] Iriaにセキュリティーホールらしいぞ。 tv3.2ch.net/test/read.cgi/geino/1050253651/377
461 名前:nobodyさん mailto:sage [03/08/04 22:07 ID:???] 今の今までflockできないとおもってたが、パーミッション777で解決しちった。
462 名前:nobodyさん [03/08/06 01:55 ID:pOGj2Sy2] てす
463 名前:nobodyさん [03/08/06 01:56 ID:pOGj2Sy2] てすてす
464 名前:nobodyさん [03/08/06 01:56 ID:pOGj2Sy2] と
465 名前:nobodyさん [03/08/07 14:03 ID:fxtSTKIN] ちょっと思った。 use Fcntl; をしといて、 sysopen を使ってLOCK_EXとか呼べないかな。
466 名前:nobodyさん mailto:sage [03/08/07 14:18 ID:???] 意味不明。 LOCK_EXは定数(を返すだけのsub)
467 名前:nobodyさん mailto:sage [03/08/07 15:00 ID:???] use Fcntl; sysopen FILE,"hoge",O_RDWR|O_CREAT|LOCK_EX; みたいなことできるかってこと? 試してみてね。 俺は知らん。