Могу ли я предотвратить длинные запросы в PDO?


Есть ли способ заставить объект PDO выдавать ошибку, если запрос занимает слишком много времени? Я пробовал PDO::ATTR_TIMEOUT безрезультатно.

Мне бы хотелось, чтобы запрос выдавал ошибку, если он выполняется дольше определенного промежутка времени. Это не то, что я могу сделать в базе данных, т. Е. Никаких заданий по обслуживанию, выполняемых в бд, или чего-либо еще.

Author: Brian Ramsay, 2009-08-21

2 answers

Я не уверен, что вы подразумеваете под "Это не то, что я могу сделать в базе данных", но я бы посоветовал вам, чтобы человек, управляющий базой данных, настроил профиль Oracle, чтобы ограничить это на стороне базы данных. Существуют такие параметры, как CPU_PER_CALL и LOGICAL_READS_PER_CALL, которые могут ограничивать запросы. При желании профиль может быть применен только к определенным пользователям.

 3
Author: dpbradley, 2009-08-21 19:04:53

Я не уверен, что вы можете сделать это в Oracle, но я собираюсь сказать, что это невозможно сделать в PHP, так как PHP отправляет запрос в Oracle для запуска, а затем ожидает ответа Oracle. Возможно, можно изменить расширение PDO для поддержки этого, но вам потребуется изменить код расширения (фактический код C), поскольку, вероятно, нет никакого способа сделать это только в PHP.

 2
Author: Steven Surowiec, 2009-08-21 19:00:06