[PHP-users 14388]Re: requireとflockについて
WADA Masashi
wada @ hh.iij4u.or.jp
2003年 3月 31日 (月) 13:45:26 JST
和田です。
いちろう たこす wrote:
>画面共通で頻繁に呼び出すcommon.incファイルをrequireで呼
>び出して使っている場合に、common.inc自体をflockを使って
>下記のように修正した場合、例えば書き込んでる最中にrequir
>eされたりしたらどうなるんでしょうか?
実際に試してみたらどうでしょう?
例えばサーバー側に次のようなスクリプトを用意します。クライアン
ト側では、Webブラウザで test1.php にアクセスし、続けて(以下の例
では10秒以内に)別ウィンドウから test2.php にアクセスします。
--- test1.php
<?php
$fp = fopen("dummy.inc", "r+");
flock($fp, LOCK_EX);
print "sleep...";
sleep(10);
flock($fp, LOCK_UN);
fclose($fp);
print "end.";
?>
--- test2.php
<?php
print "require...";
require("dummy.inc");
print "end.";
?>
--- dummy.inc
<?php
//dummy
?>
手元で試したら、Windows2000/PHP4.3.1 の環境では test2.php の結
果は次のようになりました。
require...
Fatal error: input in flex scanner failed in c:\www\htdocs\dummy.inc on line 1
また NetBSD1.6/PHP4.2.2 の環境では、test2.php の結果は、
test1.php の結果が表示される前に
require...end.
と出てきます。結局のところ、require する前に、何らかの処理が必要
になるでしょう。
----
和田雅志 (WADA Masashi)
wada @ hh.iij4u.or.jp
PHP-users メーリングリストの案内