

**環境**  
Apache: 2.4.6  
PHP: 5.6 CGI/FastCGI  
OS: CentOS 7.5.1804

**説明**

<https://www.php.net/manual/ja/function.flock.php>

上記PHPのマニュアルを読むと、以下記述がありました。

> いくつかのオーペレーティングシステムでflock() はプロセスレベルで実装されています。ISAPIのようなマルチスレッド  
>  型のサーバーAPIを使用している場合、同じサーバーインスタンスの並 列スレッドで実行されている他のPHPスクリプトに対してファイルを保護する際に
> flock()を使用することはできません!

flock()はFATのような 旧式のファイルシステムではサポートされていないため、 これらの環境の場合は常にFALSEを返すことになります。

event MPMでは1つのプロセスから複数のスレッドが起動し、各スレッドでPHPが実行されると理解しています。  
その場合、上記の制限事項に引っかかると思うのですが、情報をお持ちの方はいらっしゃいませんか？  
この制限内容だと、実質的にpreforkで動作するPHPでしかflockが使用できないように思うのですが、Web上ではそのような情報は見つけられませんでした。

また、マルチスレッド環境でも動作するロック機構が存在するのであれば、それについても情報があるとありがたいです。


CC BY-SA 4.0
2020-06-26T06:53:59.030
68024
2020-06-29T07:17:31.177
17238
question
php apache
Apacheのevent MPMで動作するPHPでflockは使用可能ですか？