[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 メーリングリストの案内

AltStyle によって変換されたページ (->オリジナル) /