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も関数がおかしいんじゃなくて、絵を表示させる部分の書いてある位置が
おかしいような気がしてきました。
いろいろ書き方を変えて試してみることにします。
あんまり解決してないですが、これ以上聞き出すとテーマが変わりそうなので、いったん解決マーク入れます。
[上に]
[前に]
[次に]