【问题标题】:Connections in loop for SQL Server Symfony2SQL Server Symfony2 的循环连接
【发布时间】:2013-12-21 16:34:17
【问题描述】:

我一直在尝试在 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 />";
}

我总是得到相同的结果,对于所有在线的服务器,连接是成功的,但是如果某些服务器离线,该函数永远不会发送异常并且它会中断循环。

希望有人能帮助我或给点建议,非常感谢。

【问题讨论】:

    标签: php sql-server symfony doctrine dbal


    【解决方案1】:

    register_shutdown_function 注册一个回调函数在之后执行 脚本执行完成或调用 exit()

    所以我认为即使你得到它也不能操作新的连接。 恕我直言,更好的方法是创建自己的服务来处理数据库连接并且不使用 this->getDoctrine()。在此服务中,您可以调用不同的实体管理器(每个 ip 一个)并检查异常。如果出现异常,您可以使用另一个实体管理器来运行查询并将其设置为默认值;

    【讨论】:

    • 感谢您的建议,我使用 register_shutdown_function 来避免“致命错误”,因为任何时候我测试连接总是在一分钟后得到“致命错误”,我会尝试创建自己的服务我会告诉你
    猜你喜欢
    • 2015-06-29
    • 2016-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-24
    • 1970-01-01
    • 1970-01-01
    • 2020-11-21
    相关资源
    最近更新 更多