Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

348
Views
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
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!