- ベストアンサー
何の違いですか?
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
参考 URL のページが参考になるのではないでしょうか。 リンク先にも書かれていますが、基本的には flock を使った方が いいですよ。 (特に、異常終了の場合)
関連するQ&A
- rename関数のファイルロック
カウンタスクリプトを作る際に、必ずファイルロックってしますよね。 いろいろなサンプルを見ると、symlink関数やmkdir関数、open関数などを使ったロック方法があるんですけど その中にrename関数を使ったものがあるんです。 解説を読んでみると、rename関数の方が他のよりも比較的に良いようなことが書いてあるのでさっそく使用。 しかし、表示が遅いんです。 カウンタは画像連結をしてIMGで呼び出しています。 renameでロックすると遅くなるのは、もうどうしようもないことなのでしょうか?
- ベストアンサー
- CGI
- iPodシリーズの違いを教えてください
iPodシリーズの違いを教えてください 具体的に、何が違うのか教えて下さい それぞれの短所、長所も教えて下さい
- ベストアンサー
- iPod・ウォークマン・音楽プレーヤー
- BBSについて
初心者です。BBSを作ろうと思って、kent-webさんのサイトから画像Up可の掲示板のスクリプトをDLしました。http://www.kent-web.com/bbs/joyful.html しかし以下の点がわかりません。 ・ # ロックファイル名 $lockfile = './lock/joyful.lock'; と書いてあるので、lock/joyful.lockというディレクトリをつくったのですが、書き込んでみると、 LOCK is BUSYとでます。ファイルロック形式がよくわからないときは2にしろとかいてあったので2にしてます。 # ファイルロック形式 # → 0=no 1=symlink関数 2=mkdir関数 $lockkey = 2; あと画像をUpする場所はどうやって確保したらよいのでしょうか? どうかご教授おねがいします。m(_ _)m
- ベストアンサー
- Perl
- ファイルロックについて
以下のようなプログラムを作り実験しているのですが、よくわからない事態になっています。 まず、ブラウザを2つ用意して、一方のブラウザで実行した後、すぐに2つめのブラウザで実行します。 mkdirの場合、$which=1として、2つ目を実行すると、busyとでます。これは1つ目がロックしているからということは分かります。 しかし、symlinkの場合、2つ目でもbusyという文字はでず、何事もなかったように両方ともOKと表示されます。これは本当にロックできているのでしょうか。また、この場合、lock.cgiが生成されません。 また、サーバーによってはmkdirで試行すると、まだロックしていないにもかかわらず、busyとでるのもあります。これは、mkdir方式が対応していないと考えればよいのでしょうか。 ------------------------ #! /usr/local/bin/perl $lockfile = "./lock.cgi"; $which = 1; filelock(); sleep 10; fileunlock(); error("OK"); sub error{ print <<END; Content-type: text/html <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <HTML><HEAD> </head> <body> $_[0] </body></html> END exit; } sub filelock { if (-e $lockfile) { # 3分以上古いロックは削除する ($mtime) = (stat($lockfile))[9]; if ($mtime < time - 60) { fileunlock(); } } local($retry) = 2; if($which){ #mkdir関数式ロック while (!mkdir($lockfile, 0755)) { if (--$retry <= 0) { &error("busy"); } sleep(1); } }else{ # symlink関数式ロック if ($lockkey == 1) { while (!symlink(".", $lockfile)) { if (--$retry <= 0) { &error("busy"); } sleep(1); } } } } sub fileunlock { if($which){rmdir($lockfile);}else{unlink($lockfile); } }
- 締切済み
- Perl