2009-08-21 28 views
6

¿Hay alguna manera de hacer que un objeto PDO arroje un error si una consulta lleva demasiado tiempo? He intentado con PDO :: ATTR_TIMEOUT sin ningún efecto.¿Puedo evitar consultas largas en PDO?

Me gustaría obtener una forma de hacer que una consulta arroje un error si se está ejecutando durante más tiempo que una cierta cantidad de tiempo. Esto no es algo que pueda hacer en la base de datos, es decir, no hay trabajos de mantenimiento ejecutándose en el DB ni nada.

Respuesta

3

No estoy seguro de lo que quiere decir con "Esto no es algo que puedo hacer en la base de datos", pero sugiero que la persona que administra la base de datos configure un perfil de Oracle para limitar esto en la base de datos lado. Hay parámetros como CPU_PER_CALL y LOGICAL_READS_PER_CALL que pueden limitar las consultas. El perfil se puede aplicar solo a usuarios específicos si así lo desea.

+0

No quiero hacer largas consultas en general, sino simplemente esta que se usa para supervisar la base de datos. –

+0

Ah, ya veo. Bueno, si no hay una solución del lado del cliente, un enfoque un tanto intrincado con los perfiles sería reconfigurar la aplicación para que esta consulta solo sea emitida por un usuario específico y luego aplicar el perfil solo a ese usuario. – dpbradley

2

No estoy seguro si puedes hacer esto en Oracle, pero voy a decir que no es posible hacerlo dentro de PHP ya que PHP está ejecutando la consulta a Oracle para que se ejecute y luego está esperando la respuesta de Oracle . Es posible modificar la extensión PDO para que sea compatible, pero necesitaría modificar el código de extensión (el código C real) ya que probablemente no haya ninguna forma de hacerlo en PHP.

Cuestiones relacionadas