如何處理Mediawiki擴展中的錯誤條件?Mediawiki擴展錯誤處理
我寫了一個擴展,它使用一對存儲過程從SQL Server表中檢索數據。
這一切都正常工作,直到數據庫或服務器處於脫機狀態,此時mssql_connect調用失敗。我已經嘗試了很多處理這個問題的方法,但是每個方法都會在錯誤500或其他空白頁面上出現錯誤文本時失敗,這兩個方法都會阻止wiki頁面加載。我希望它正常失敗並允許其他wiki頁面正確加載。
我知道我錯過了一些明顯的東西,有什麼想法?
下面是我使用連接到數據庫和值返回頁面代碼:
function RetrieveFromDatabase($sproc, $spparam)
{
$usr = "usr";
$pwd = "pwd";
$db = "BGInfo";
$host = "server";
$output = "";
// connect to database
$con = mssql_connect ($host, $usr, $pwd);
mssql_select_db($db);
/* prepare the statement resource */
$stmt=mssql_init($sproc, $con);
if (isset($spparam))
{
mssql_bind($stmt, '@MachineName', $spparam, SQLVARCHAR);
}
/* now execute the procedure */
if ($result = mssql_execute($stmt))
{
return $result;
}
else
{
return NULL;
}
}
function GetMachineTotalStorageInTBRender($input, $args, $parser)
{
$parser->disableCache();
$output = "";
$result = RetrieveFromDatabase("TotalDriveSpaceByMachine", $input);
if ($result)
{
while($row = mssql_fetch_array($result))
{
// Assign Variables
$TotalTB = $row["TB"];
if(!is_null($TotalTB))
{
// Print Variables in Table
$output = $TotalTB." TB";
}
} // End While Loop
} // End If
return $output;
}
謝謝,wfSuppressWarnings和wfRestoreWarnings停止了日誌中的消息。 我試過了'if($ con)',但它仍然失敗,我在日誌中注意到一個致命的錯誤消息「最大執行時間超過60秒」,它看起來像是每個'$ con = mssql_connect($ host,$ usr,$ pwd)'調用。有沒有辦法處理連接周圍的時間? – IronBeard
如何檢查「空($ con)」而不是? –