tag español attribute php mysql postgresql pdo

php - attribute - title html español



Configuración de un tiempo de espera de conexión con DOP (2)

Estoy usando el controlador DBLIB para PDO, y eso no admite el paso de opciones (muestra una advertencia).

Para /etc/freetds/freetds.conf esto, puede editar la configuración de connection_timeout en el archivo de configuración de FreeTDS que se encuentra en /etc/freetds/freetds.conf (en Ubuntu).

Estoy usando PDO para obtener datos de un servidor MySQL. Lo que noté es esto: si el servidor MySQL no está disponible, este código demora realmente (relativamente) este código en devolver una excepción:

try { $handle = new PDO($db_type . '':host=''.$db_host.'';dbname=''.$db_name,$db_user,$db_pass); // Tried using PDO::setAttribute and PDO::ATTR_TIMEOUT here } catch(PDOException $e) { echo $e->getMessage; }

En el caso de MySQL, se tarda un poco más de 2 minutos para que se produzca la excepción (SQLSTATE [HY000] [2003] No se puede conectar al servidor MySQL en ...) y 30 segundos en PostgreSQL (SQLSTATE [08006] [7] expiró el tiempo de espera ).

Intenté usar PDO :: setAttribute y PDO :: ATTR_TIMEOUT pero no está funcionando. Lo cual supongo que tiene sentido, ya que el problema ocurre antes de esta declaración.

¿Hay alguna manera de establecer un tiempo de espera para conectarse a la base de datos? 2 minutos / 30 segundos me parece muy largo para que la DOP se dé cuenta de que no hay nada allí.

Creo que vi que esto se estaba haciendo en algún lugar, pero no puedo encontrarlo de nuevo por mi vida.


$DBH = new PDO( "mysql:host=$host;dbname=$dbname", $username, $password, array( PDO::ATTR_TIMEOUT => 5, // in seconds PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION ) );