Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

349
Visualizações
Conmutación por error de PHP postgres

Estoy ejecutando una aplicación web PHP que usa PDO para conectarse a postgres ( https://github.com/fusionpbx/fusionpbx/blob/bc1e163c898ea2e410787f8e938ccbead172aa5a/resources/classes/database.php#L202 ).

Estoy ejecutando un clúster de conmutación por error y, básicamente, solo pongo 2 nombres de host y mi cadena de conexión se ve así:

"pgsql:host=host1,host2 port=5432 dbname=fusionpbx user=fusionpbx password=contraseña target_session_attrs=lectura-escritura"

Esto funciona bien, si el host1 está en espera, el host2 se selecciona con muy poca demora. El único problema es que no se puede acceder al host1 o está inactivo. En este caso, PDO/controlador (?) siempre prueba host1 primero, espera 30 segundos hasta que se agota el tiempo de espera y va a host2. Parece que no se recuerda el hecho de que host1 no está disponible. Encontré 3 soluciones:

  1. agregue PDO::ATTR_TIMEOUT=2 al crear PDO. Sí, estúpido, lo sé, pero permite al menos una solución temporal, en caso de falla, hasta que descubra la solución correcta.
  2. monitorear externamente postgres y cambiar el orden de los nodos en la cadena de conexión, poniendo el nodo activo siempre primero. Estoy empezando a pensar que es menos evasivo.
  3. PDO::ATTR_PERSISTENT => verdadero: probé esto y, a primera vista, funciona bastante bien, pero dado que no soy realmente un tipo de PHP, y la aplicación no es mía sino una aplicación de terceros, soy reacio a hacer un cambio tan impactante.

Tal vez alguien podría compartir su experiencia? Estoy bastante sorprendido de lo poco que se puede encontrar sobre esto en la red. Además, en el mismo cuadro estoy ejecutando secuencias de comandos lua, también conectándome a los mismos postgres de la misma manera, y parece que no tengo problemas para manejar este escenario. Es la misma versión de libpq ya que es la misma caja de Linux y no estoy agregando nada específico a la cadena de conexión.

over 4 years ago · Santiago Trujillo
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda