[PHP-users 10949] Flockについて

Yoshi php-users@php.gr.jp
2002年10月18日 20:31:34 -0700


flock()をしてるんですが、サーバーファイル内のデータ消えた
と言われる方おられますか??
普段は消えないんですが、アクセスが多くなってくると
消える確立が高くなってきます。
設定としてはサーバー内の他のプログラムなどが
同じファイルを参照したりはしてないはずなんですが、
多分PHPを通じてファイルへの書き込みアクセスが
重複したときに消えてる見たいです・・・
以前PHPではPHP以外の外部プログラムからの
ファイル参照を完全にLOCKできないと何処かで
見たような気がするんですが、同じPHP上でも
完全にLOCK出来ないんでしょうか?
この現象にはほとほと困っています。
どなたかお助けを・・・
サーバーはDebian GNU/Linux 2.2で、
PHP4(i18n非対応)で、CIGとして動かしてます。
問題のファイル参照時はこんな感じのFUNCTIONを使ってます。
あと、wlockinはあまりに消えるんで、自分でもう一つファイルを
作ってLOCKをする関数を作って適応してます。
(これは実際の書き込みはしないので、気にしないで下さい)
 function file_write( $FileName , $DATA , $mode ){
 if( $lockid = wlockin ( $FileName ) ){ //ファイルロック(自作)
 if($fp = @fopen ( $FileName , "$mode")){
 if(flock( $fp , LOCK_EX )){ //flock
 fputs ($fp , $DATA );
 fflush ( $fp );
 flock ( $fp , LOCK_UN ); //flock
 fclose ($fp);
 }
 }
 wlockout( $lockid );//ファイルロック開放(自作)
 return 1;
 }
 }

AltStyle によって変換されたページ (->オリジナル) /