簡體   English   中英

SQL Server Symfony2的循環連接

[英]Connections in loop for SQL Server Symfony2

我一直在嘗試為Symfony 2.3中的其他MSSQL Server創建一個循環,但是如果某些服務器關閉或MSSQL服務已關閉,則該應用程序不會例外,並且會中斷功能。

這是主控制器:

function pruebaconAction()
{
    $enlistaServers = new array (
                                 10.10.10.1, 
                                 10.10.10.2, 
                                 10.10.10.3, 
                                 ...
                                 10.10.10.19,
                                 10.10.10.20
                                );

    foreach($enlistaServers as $datosServer)
    {
        $direccionIPParaConexion = $datosServer->getDireccionIp ();
        $nombreLocalidad = $datosServer->getNombre();
        register_shutdown_function(array($this, 'conectaSrv'), $direccionIPParaConexion, $nombreLocalidad);
    }
    return $this->render("GastoEnlaceBundle:Default:pruebacon.html.twig");
}

此函數創建連接:

function conectaSrv($direccionIpConexion, $nombreLocalidad)
{
    $pruebaDBAL = new \Doctrine\DBAL\Configuration();
    $parametrosConexion = array(
        'dbname' => 'MyDB',
        'user' => 'user',
        'password' => 'password',
        'host' => $direccionIpConexion,
        'driver' => 'pdo_sqlsrv'
    );
    $conexionDBAL = DriverManager::getConnection($parametrosConexion, $pruebaDBAL);
    if($conexionDBAL->connect())
        echo "Success<br />";
    else
        throw new Exception("Something is wrong :(<br />");
    echo "=======================================================================<br />";
}

我總是得到相同的結果,對於所有在線服務器,連接都是成功的,但是如果某些服務器處於脫機狀態,該函數將永遠不會發送異常,並且會中斷循環。

我希望有人能幫助我或提供建議,非常感謝。

register_shutdown_function注冊在腳本執行完成或調用exit()之后要執行的回調

因此,我認為即使獲得新連接也無法操作。 恕我直言,更好的方法是創建自己的服務來處理數據庫連接,而不使用this-> getDoctrine()。 在此服務中,您可以要求不同的實體管理器(每個ip一個)並檢查異常。 如果出現異常,則可以使用另一個實體管理器來運行查詢,並將其設置為默認值;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM