2011-07-24 18 views
1

私は人々がFastCGIのfastCGIのexit()関数呼び出し時のエラー?

https://serverfault.com/questions/84962/php-via-fastcgi-terminated-by-calling-exit

http://php.net/manual/en/function.exit.php

を実行している間彼らのPHPスクリプトでexit関数を使用しているとき、「それを動作させているサイトを構築する場合のことに留意すべき問題に直面していることを読んでいますFastCGI、exitを呼び出すと、サーバーのログファイルにエラーが生成されます。これはすぐにいっぱいになる可能性があります。

私のエラーログは、私はFastCGIを設定したにもかかわらず、この簡単なスクリプトを実行した後に、この問題を報告していないが:

<?php 
$num=2; 

if($num==2){ 
    exit(); 
} 
?> 

私がFastCGIを構成している状態exit関数を使用しても安全でしょうか?そして、PHPのexit関数の代わりに何かありますか?

編集:私は、出口()関数のフォームフォームの検証を使用しています(つまり、フォームが有効な出口がある場合、テキストフィールドにすべての投稿の変数を解析できない場合は、。)

答えて

2

は、いくつかの正当な理由があります。 die()と同じexit()を使います。 1つの例は、ヘッダーLocation:redirectに従うことです。

フォームの検証はdie()を使用する場所ではありません。代わりに値を返すメソッドで関数またはクラスを利用し、分岐ロジックを利用するようにコードを構造化します。

fastcgiでは、コードが到達してはならない状況にexitを適切に使用すると、そのような状況は通常とは異なり、いくつかのログメッセージが問題になることはありません。ログファイルをいっぱいにすると、何かをしないというかなりばかげた理由があるようです。アクティブなWebサーバーがすべての要求を記録しており、誰もWebログを持たないと主張している人はいません。 exit() man page による「Gmailのドットコムでdexenドットdevries」に掲載exit()に本当にいいの代替があります

+0

とは違って、* illegitimate *が使用されていますか? – foxy

2

:あなたはコメントは以下の あたりなどのFastCGIでexit()を呼び出さないようにしたい場合は

しかし、実際に、積極的にネストされた 関数呼び出しからきれいに終了したいかなどが、それをPythonの方法を行うことを検討:

は、 `SystemExitを」という名前の例外を定義する( の出口を呼び出すのではなく、それを投げる)、インデックスにそれをキャッチ空の.phpハンドラはスクリプトを正常に実行するために を終了します。

<?php 

// file: index.php 
class SystemExit extends Exception {} 
try { 
    /* code code */ 
} 
catch (SystemExit $e) { /* do nothing */ } 
// end of file: index.php 

// some deeply nested function or .php file  

if (SOME_EXIT_CONDITION) 
    throw new SystemExit(); // instead of exit() 

?> 
関連する問題