[PHP-users 10949] Flockについて
Yoshi
php-users@php.gr.jp
Fri, 18 Oct 2002 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;
}
}