[php]exit;ではなくexit(1);を使う理由

徒然草2.0

phpの処理を終了するにはexit;を使うといいのですが、念の為exit(1);にしたほうがいいといアドバイスをいただいたことがあります。

exit;でも普通に終了するのですが、C言語などで関数が終了したのをreturn 0;やreturn 1;などで制御することがあり、0は正常終了、1は異常終了を意味するためかと思います。

phpのWebアプリはphpを実行している実行主体があって、apacheならapacheのモジュール(だっけ)ningxならばphp-fpmで動かしているphpのWebアプリケーションがexit;で止まらなかったこと最近はまずないのですが、perl-cgiをやっていた時はhttpdのプロセルが固まってしまったことがあります。まあ…昔、そんなことがあったなというぐらいですが。結構致命的な問題なので…exit;ではなくてexit(1);を使用していたほうがいいのかもしれません。

exit(0); // 正常終了

exit(1); // 異常終了

という意味づけも一緒にすることができますので…ただ1の意味を知らないと意味付けになりませんが。それに処理系によって1と0は分かれる(逆の意味を持つ)かもしれませんし、そもそも正常終了なのになぜ途中終了するのか?という気もしますが汗。深くは触れないでおきます。

コメント

タイトルとURLをコピーしました