1

Mediawiki 拡張機能でエラー状態をどのように処理しますか?

いくつかのストアド プロシージャを使用して SQL Server テーブルからデータを取得する拡張機能を作成しました。

DB またはサーバーがオフラインになるまで、すべて正常に動作し、その時点で mssql_connect 呼び出しが失敗します。私はこれに対処するための多くの方法を試しましたが、いずれもエラー 500 で失敗するか、空白のページにエラー テキストが表示され、どちらも wiki ページの読み込みが停止します。正常に失敗し、残りの wiki ページが正しく読み込まれるようにしたいと考えています。

明らかな何かが欠けていることはわかっていますが、何かアイデアはありますか?

以下は、DB に接続してページに値を返すために使用しているコードです。

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;
}
4

2 に答える 2

1

まず、次のようにエラー抑制で mysql_connect() 呼び出しを囲みます。

wfSuppressWarnings();
$con = mssql_connect ($host, $usr, $pwd);
wfRestoreWarnings();

第二に、$con を確認し、致命的な事態を防ぐために早期に救済します。

于 2012-05-27T07:14:34.663 に答える