我可以阻止PDO中的长查询吗?

时间:2009-08-21 18:39:24

标签: php database oracle timeout pdo

如果查询花费的时间过长,有没有办法让PDO对象抛出错误?我试过PDO :: ATTR_TIMEOUT没有效果。

如果查询运行的时间超过一定时间,我想要一种查询错误的方法。这不是我在数据库中可以做的事情,即没有在db或任何东西上运行的维护作业。

2 个答案:

答案 0 :(得分:3)

我不确定你的意思是“这不是我在数据库中可以做的事情”,但我建议你让管理数据库的人设置一个Oracle配置文件来限制它在数据库端。有一些参数,如CPU_PER_CALL和LOGICAL_READS_PER_CALL可以限制查询。如果需要,该配置文件只能应用于特定用户。

答案 1 :(得分:2)

我不确定你是否可以在Oracle中做到这一点但是我会说在PHP中不可能这样做,因为PHP正在向Oracle发出查询以便运行,然后等待Oracle的响应。有可能修改PDO扩展以支持这一点,但是您需要修改扩展代码(实际的C代码),因为可能没有任何方法可以在PHP中执行此操作。