我可以防止 PDO 中的长查询吗?
Posted
技术标签:
【中文标题】我可以防止 PDO 中的长查询吗?【英文标题】:Can I prevent long queries in PDO? 【发布时间】:2010-11-21 18:23:13 【问题描述】:如果查询时间过长,有什么方法可以让 PDO 对象抛出错误?我试过 PDO::ATTR_TIMEOUT 没有效果。
如果查询运行时间超过一定时间,我想要一种方法来引发错误。这不是我可以在数据库中做的事情,即没有在数据库上运行维护作业或任何东西。
【问题讨论】:
【参考方案1】:我不确定您所说的“这不是我可以在数据库中做的事情”是什么意思,但我建议您让管理数据库的人员设置一个 Oracle 配置文件以在数据库方面限制这一点.有诸如 CPU_PER_CALL 和 LOGICAL_READS_PER_CALL 之类的参数可以限制查询。如果需要,该配置文件只能应用于特定用户。
【讨论】:
我想停止的不是一般的长查询,而是用于监控数据库的这个。 啊,我明白了。好吧,如果没有客户端解决方案,使用配置文件的一种有点复杂的方法是重新配置应用程序,以便此查询仅由特定用户发出,然后仅将配置文件应用于该用户。【参考方案2】:我不确定您是否可以在 Oracle 中执行此操作,但我要说在 php 中执行此操作是不可能的,因为 PHP 正在向 Oracle 发出要运行的查询,然后等待 Oracle 的回复。可能可以修改 PDO 扩展以支持此功能,但您需要修改扩展代码(实际的 C 代码),因为可能没有任何方法可以仅在 PHP 中执行此操作。
【讨论】:
以上是关于我可以防止 PDO 中的长查询吗?的主要内容,如果未能解决你的问题,请参考以下文章
如何防止 PHP PDO 通过 jQuery AJAX 插入 MySQL varchar 中的转义字符