説明
bool
flock ( int fp, int operation, int
[wouldblock])
PHP は、恣意的にファイルをロックする汎用の手段を提供します。
(これは、アクセスする全プログラムが同一のロックの方法を使用する
必要があり、そうでない場合は動作しないことを意味します)
flock()は、fpを用いて
操作を行います。これは、オープンされたファイルポインタである必要が
あります。operationは、次の値のどれかとな
ります。
共有ロック(読み手)とするには、operationに
LOCK_SH(PHP 4.0.1より前の場合は1に設定します)をセットします。
排他的ロック(書き手)とするには、
operationにLOCK_EX(PHP 4.0.1より前の場
合は2に設定します)をセットします。
(共有または排他的)ロックを開放するには、
operationにLOCK_UN(PHP 4.0.1より前の場
合は3に設定します)をセットします。
ロック中に flock()でブロックを行いたくない場
合は、operation に LOCK_NB ( PHP 4.0.1
より前の場合は 4 に設定します)を加えます。
flock()により、(ほとんどのUNIXやWindowsさえ含む)
ほとんど全てのプラットフォームで使用可能な簡易な読み手/書き手モデ
ルが実現されます。ロックをブロックモードとする場合(EWOULDBLOCK
errno 条件)にオプションの3番目の引数にTRUEを設定します。
flock() は成功時にTRUE、
(例えばロックが確保できなかった場合等の)エラー時にFALSEを返します。
注意
flock()は、ファイルポインタを必要とするため、
(fopen()へ引数"w"または"w+"を指定して)書き込
みモードでオープンすることにより丸めるファイルにアクセス保護する
特別なロックファイルを使用する必要があるかもしれません。
警告 |
flock()はNFS及び他の多くのネットワークファイ
ルシステムでは動作しません。詳細についてはオペレーティングシステ
ムのドキュメントを確認下さい。
いくつかのオーペレーティングシステムでflock()
はプロセスレベルで実装されています。ISAPIのようなマルチスレッド
型のサーバーAPIを使用している場合、同じサーバーインスタンスの並
列スレッドで実行されている他のPHPスクリプトに対してファイルを保
護する際に flock()を使用することはできません!
|