cgiでファイルロックがちゃんとかかっているか確認する方法は?

[上に] [前に] [次に]
まさや [E-Mail] 1999/12/01(水) 09:44:25
アクセスログのcgiでflock関数を使ったのですが、これがきちんと
動いてるのか確認する方法はありますか?
マニュアルの通りに書いたつもりなんですが、どうにも理解できて
ないような気がするのです。
よろしくお願いします。

P初心者 1999/12/01(水) 10:29:01
flock()後、sleep()をかましたCGIもう一本作って、起動します。
つぎに、これがスリープ中にアクセスログのcgiを起動すれば、
これで、ロックがちゃんとかかっているか確認できるとおもいます!

まさや [E-Mail] 1999/12/01(水) 13:00:06
P初心者様、回答ありがとございます。
しかしものすごく情けないんですが、やり方がよくわかりません。

>sleep()をかましたCGIもう一本作って、起動します。
>スリープ中にアクセスログのcgiを起動
これって同じcgiの中にsleep()を書くんですか?
それともcgiでさらにcgiの呼び出しをするのでしょうか?(そんな
ことができるのかどうもかもよくわかってないです)
もうしわけありませんが、もう一度詳しく説明してやってもらえない
でしょうか。。。

P初心者 1999/12/01(水) 13:31:36
説明足らずで、すみません!

今テスト中のCGIの名前を仮に ABC.cgi とします。
これをコピーして同じcgiソースを XYZ.cgi とします。
そして、XYZ.cgiソースのflock()後に一行 sleep(60); を追加します。
AブラウザからXYZ.cgiを起動します。
その後、別のBブラウザからABC.cgiを起動します。
XYZ.cgiの標準出力のHTMLがBより先にAブラウザに表示されれば、ロックは効いています!
逆にBの方が速いとロックは効いていません!

まさや [E-Mail] 1999/12/01(水) 14:31:25
P初心者様、重ね重ねありがとございます。
すごくわかりやすい説明で私にもなんとかなりました。

結果はsleep()を入れたものの方が後で絵が表示されたので、
やはり失敗しているようです。もうちょっとマニュアルと
見つめ合ってみます。

それとちょっとログを調べていて気になったので、よかったら
教えてください。
>8件目: [1999/12/01/水 14:18:25] ←sleep()を入れてないもの
>9件目: [1999/12/01/水 14:18:04] ←sleep()を入れたもの
というふうに書き込みの時間が前後してしまっているのですが、
これはsleep()のせいなのでしょうか?
何度もすみませんが、どうぞよろしくお願いします。

P初心者 1999/12/01(水) 15:47:34
flockを掛ける時、書き込み処理時はモードは2をお勧めします。
3は即時復帰で、すぐ帰ってきます。
1での書き込み処理時はどうなるの?(2と同じ?だたし、リード処理はできる)

ログに関しては、環境が把握できていませんので、私にはわかりません!

Shige 1999/12/01(水) 16:40:42
アクセスログの時間がおかしくなっているのは、書き込む直前ではなく、CGIを起動した直後に時刻を取得しているのではないですか?
時刻を取得した後に、片方はsleep(60)をいれてもう片方は入れなかったら、当然順序が変わりますよね。
もし全然違うことをいっていたらすみません。

まさや [E-Mail] 1999/12/01(水) 17:26:07
P初心者様、Shige様、どうもありがとうございます。

ログの件は確認してみたら、Shige様のおっしゃるように時刻の取得位置がヘンでした。
この分だとflockも関数がおかしいんじゃなくて、絵を表示させる部分の書いてある位置が
おかしいような気がしてきました。
いろいろ書き方を変えて試してみることにします。

あんまり解決してないですが、これ以上聞き出すとテーマが変わりそうなので、いったん解決マーク入れます。

まさや [E-Mail] 1999/12/01(水) 17:26:21
[[解決]]
P初心者様、Shige様、どうもありがとうございます。

ログの件は確認してみたら、Shige様のおっしゃるように時刻の取得位置がヘンでした。
この分だとflockも関数がおかしいんじゃなくて、絵を表示させる部分の書いてある位置が
おかしいような気がしてきました。
いろいろ書き方を変えて試してみることにします。

あんまり解決してないですが、これ以上聞き出すとテーマが変わりそうなので、いったん解決マーク入れます。

[上に] [前に] [次に]