2011-07-24 59 views
1

我一直在讀,人們在PHP腳本使用exit函數時,同時運行的FastCGI錯誤呼籲FASTCGI exit()函數時?

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

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

「應當指出的是,如果建立一個網站運行上面臨的問題FastCGI,調用exit會在服務器的日誌文件中產生一個錯誤,這很快就會填滿。「

但是我的錯誤日誌不報告,即使我已經FastCGI的配置在運行這個簡單的腳本後,這個問題:

<?php 
$num=2; 

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

難道是安全的使用exit函數,而我已經配置的FastCGI?是否有任何替代方案在PHP中的退出功能?

編輯:我使用exit()函數形式表單驗證(例如,如果一種形式是有效的退出,如果不是分析所有的變量貼在文本字段中。)

回答

2

有一些正當的理由使用與die()相同的exit()。一個例子是遵循標題位置:重定向。

表單驗證是不使用模具()的地方。結構化代碼,以便利用函數或類來使用返回值的方法,並使用分支邏輯。

在FastCGI的方面,如果出口被適當地用於其中達到代碼的情況下,不應該是,那麼這些情況將是非典型的和幾個日誌消息不應該是一個問題。有一個日誌文件填滿似乎非常愚蠢的理由不這樣做的東西 - 一個活躍的Web服務器日誌記錄每一個請求,沒有人認爲你不應該有一個網絡日誌。

+0

而不是*非法*使用? – foxy

2

有一個非常不錯的選擇,exit()貼在exit() man page通過 「在Gmail的點com dexen點DeVries醫師」:

如果你想避免調用FastCGI的出口()按照意見如下 ,但實際上,積極地想從嵌套 函數調用完全退出或包括,可考慮做這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() 

?>