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