| 今回、私では解決できない問題が発生したので、書き込みました 出来れば、アドバイスをいただけないでしょうか よろしくお願いします。
BiG−NETと言うところで、Child Treeの掲示板を運営しているのですが アクセス数が多く、Child Treeに付属しているロック機能ではデッドロックが発生してしまい、サーバーに負担をかけてしまっています。 そのため、BiG−NETにメールを送ったところ、以下を導入することを進められたのですが(以下付属された資料) −−−−−−−−−−−−−−−−−−−−−−−−−−−−−− flock() の参考資料です。
#-------------------------------# # ロックファイル:flock 関数 # #-------------------------------# sub lock { flock(対象ファイルのポインタ, 2); }
#-------------------------------# # ロック解除:flock 関数 # #-------------------------------# sub unlock { flock(ロックファイルのポインタ, 8); }
本当はこれを「書く」時、もしそのファイルを内容を読んで更新するなら 「読む」時から、実際の処理の手前で呼び出せばOKです。流れとしては
open(対象ファイルのポインタ,"対象ファイル"); &lock(); 処理 &unlock();
だけです。ポイントは open() してからでないとファイルポインタが判ら ない点です。なので、open() 後に中身が変わっている可能性もあるので 「書き足し」などの場合には flock() 後にシーク(seek())しないとい けません。 −−−−−−−−−−−−−−−−−−−−−−−−−−−−−− しかし私は、CGIの知識が不十分で、何処にどのように導入すればよいかがわかりません もしよろしければChild Treeにどのように改造をすればよいかを教えていただけないでしょうか
ご迷惑をおかけしますが、なにとぞよろしくお願いします。
|