[PHP-users 18211] Re: PHP4.3.4RC1 release coming soon?

komura komura @ ma9.seikyou.ne.jp
2003年 10月 2日 (木) 18:26:50 JST


komura です。

Cygwin を使っていますので、調べてみました。間違っていたら指摘を
お願いします。

現時点での最新の Cygwin (1.5.5-1) で試しました。


On Thu, 02 Oct 2003 10:19:37 +0900
Osamu Shigematsu <m5issige @ mr.hitachi-medical.co.jp> wrote:

> PHP 4.3.4RC1 を落として試しているのですが、make test が途中で止まります。
> 
> 具体的には、
> 
> 	[tests/func/005.phpt]
> 
> に PASS したあとに反応がなくなってしまいます。

こちらが試した環境でも同じでした。調べてみると、

test/func/005a.phpt

で反応がなくなりました。

test/func/005a.phpt のソースの一部を抜粋すると、

  register_shutdown_function("boo");

  /* not necessary, just to show the error sooner */
  set_time_limit(1);

  /* infinite loop to simulate long processing */
  for (;;) {}

のようになっていますが、Cygwin では、set_time_limit() が失敗する
ようです。そのため、for 文で無限ループになり、反応がなくなります。

PHP のソースを調べたところ、PHP の実行時間を設定する
php.ini の max_execution_time と set_time_limit() 関数は
C の setitimer() で第一引数に ITIMER_PROF を使って実装されているよう
ですが、Web で検索してみたところ、Cygwin では、setitimer() は、
ITIMER_REAL しかサポートしていないというような記述を見つけました。

http://www.cygwin.com/ml/cygwin/2002-12/msg01412.html

このため、Cygwin では、PHP で実行時間を設定する max_execution_time や、
set_time_limit() が働いていないのではないかと思います。


> 私の環境では以前からここで固まるので、特に無視していたのですが、
> 一向に改善されないので、ちょっと気になりました。

Cygwin の問題のようにも見えますので、PHP 側で対応するには、Cygwin 用に
実装するしかないような気がします。

--
komura <komura @ ma9.seikyou.ne.jp>


PHP-users メーリングリストの案内