PHPのファイルロック機能は非常に不安定です。特に、PHP のバージョンとプラットフォームに大きく関係します。今日、私は Zend_Search_Lucence で解決策を見ました:
最初にファイルをロックします。ロック モードは flock($file, LOCK_EX | LOCK_NB) です。次のプロセスが $file に再度アクセスすると、flock のロックを取得できなくなるため、false が返されます。ファイルがロックされており、アクセスできないことを示します。
Zend_Search_Lucence がロックされているときは、主にインデックスの書き込み、インデックスの読み取り、インデックスの最適化が行われます。
LOCK_NBについて:
Linux ではサポートが強化されていますが、Windows では PHP 5.2.1 までサポートされません。
したがって、Zend_Search_Lucence を使用するには、PHP 5.2.1 以降を使用するのが最適です。
バージョンが PHP 5.2.1 より低い場合、プロセスは永久に待機します (Windows では、PHP 5.2.1 より前のバージョンはノンブロッキング モード ロックをサポートしていないため)。
インデックスの更新について: インデックスを更新する際、インデックスはロックされることがよくあります。したがって、インデックスをすぐに更新することは推奨されません。アクセス数が比較的少ない夜間にインデックスを更新することをお勧めします。