2009-08-21 17 views
6

Esiste un modo per rendere un oggetto PDO un errore se una query richiede troppo tempo? Ho provato PDO :: ATTR_TIMEOUT a nessun effetto.Posso impedire lunghe interrogazioni in PDO?

Vorrei un modo per fare in modo che una query genera un errore se è in esecuzione più a lungo di un certo periodo di tempo. Questo non è qualcosa che posso fare nel database, cioè nessun lavoro di manutenzione in esecuzione sul db o altro.

risposta

3

Non sono sicuro di cosa intendi per "Questo non è qualcosa che posso fare nel database", ma suggerirei che la persona che gestisce il database abbia configurato un profilo Oracle per limitare questo al database lato. Ci sono parametri come CPU_PER_CALL e LOGICAL_READS_PER_CALL che possono limitare le query. Il profilo può essere applicato solo a utenti specifici, se lo si desidera.

+0

Non si tratta di query lunghe in generale, voglio fermarmi, ma solo questa che viene utilizzata per monitorare il database. –

+0

Ah, capisco. Bene, se non esiste una soluzione lato client, un approccio un po 'contorto con i profili potrebbe essere quello di riconfigurare l'applicazione in modo che questa query venga emessa solo da un utente specifico e quindi applicare il profilo solo a quell'utente. – dpbradley

2

Non sono sicuro che sia possibile farlo in Oracle, ma sto per dire che non è possibile farlo in PHP poiché PHP sta eseguendo la query su Oracle per essere eseguita e quindi sta aspettando la risposta di Oracle indietro . Potrebbe essere possibile modificare l'estensione PDO per supportarlo, ma è necessario modificare il codice di estensione (il codice C attuale) poiché probabilmente non c'è alcun modo per farlo in PHP.

Problemi correlati