またはその逆のケース。
それぞれ
Perl と
PHP で書かれたプログラムがあって、その両者が同じファイルに読み書きする処理を考えます。
ここで
Perl の
flock 命令でファイルを排他ロックをした場合、
PHP から同じファイルへの読書きは
PHP の
flock でブロックされるのか?という疑問。
以下のようなコードを
Perl と
PHP で書いて
実験してみました。
論より証拠、まずは動かして試してみます。
結論から言うと、
実験した環境では期待通りの動作になりました。
Perl の
flock 命令で排他ロックしたファイルは、
ロックが開放されるまで
PHP の
flock 命令でブロックされます。
また逆のケースでも同じです。
sleep 命令で
flock によるロック状態を暫く保持できるようにしてあります。
それぞれのプログラムを少し時間差を付けて
ブラウザから呼び出し、
test.txt の内容をチェックします。
実験に使用した環境は以下の通りです。
加えて以下の
リンクも参考に。
最終的にはどちらも同じシステムコールに行き着くわけですから、表面的な言語の違いというのは問題では無いということですね。
そして言語は違えど正しくロックを行わないと効果はありませんよ、と。
お付き合いくださったマイミク三矢田さん、TOMMY山さん、ありがとうございました
この記事を読んだ人はこんな記事も読んでいます
Perl, Oerl, 0erl, -erl, Lerl, PWrl, P3rl, PRrl, PDrl, PSrl, PeEl, Pe4l, Pe5l, PeTl, PeFl, PeDl, PerK, PerO, PerP
PHP, OHP, 0HP, -HP, LHP, PGP, PYP, PUP, PJP, PNP, PBP, PHO, PH0, PH-, PHL
CGI, XGI, DGI, FGI, VGI, CFI, CTI, CYI, CHI, CBI, CVI, CGU, CG8, CG9, CGO, CGK, CGJ
ソースコード