Могу ли я предотвратить длинные запросы в PDO?
Есть ли способ заставить объект PDO выдавать ошибку, если запрос занимает слишком много времени? Я пробовал PDO::ATTR_TIMEOUT безрезультатно.
Мне бы хотелось, чтобы запрос выдавал ошибку, если он выполняется дольше определенного промежутка времени. Это не то, что я могу сделать в базе данных, т. Е. Никаких заданий по обслуживанию, выполняемых в бд, или чего-либо еще.
2 answers
Я не уверен, что вы подразумеваете под "Это не то, что я могу сделать в базе данных", но я бы посоветовал вам, чтобы человек, управляющий базой данных, настроил профиль Oracle, чтобы ограничить это на стороне базы данных. Существуют такие параметры, как CPU_PER_CALL и LOGICAL_READS_PER_CALL, которые могут ограничивать запросы. При желании профиль может быть применен только к определенным пользователям.
Я не уверен, что вы можете сделать это в Oracle, но я собираюсь сказать, что это невозможно сделать в PHP, так как PHP отправляет запрос в Oracle для запуска, а затем ожидает ответа Oracle. Возможно, можно изменить расширение PDO для поддержки этого, но вам потребуется изменить код расширения (фактический код C), поскольку, вероятно, нет никакого способа сделать это только в PHP.