在PHP中运行带超时的sql查询,或者在PHP中如何在sql查询已经开始时停止查询?

在PHP中运行带超时的sql查询,或者在PHP中如何在sql查询已经开始时停止查询?,php,oracle,timeout,oracle-call-interface,kill-process,Php,Oracle,Timeout,Oracle Call Interface,Kill Process,我读了好几年的文档,但在我看来有点模糊 oci\u cancel是否终止服务器中的sql进程 如果没有,我如何生成一个脚本来执行sql查询,等待片刻,如果查询超过10秒(例如),则在服务器中取消查询 请原谅,如果这个问题与很久以前问过的问题类似,但我没有找到任何令人满意的答案。如果您想取消脚本执行并阅读有关oracle查询取消的内容,请使用该选项。PDO允许您使用“ATTR_TIMEOUT”属性,尽管这完全取决于驱动程序是否支持它 最终,我不得不使用一种不知道它是否是最好的解决方案,但它是多种因

我读了好几年的文档,但在我看来有点模糊

oci\u cancel
是否终止服务器中的sql进程

如果没有,我如何生成一个脚本来执行sql查询,等待片刻,如果查询超过10秒(例如),则在服务器中取消查询


请原谅,如果这个问题与很久以前问过的问题类似,但我没有找到任何令人满意的答案。

如果您想取消脚本执行并阅读有关oracle查询取消的内容,请使用该选项。

PDO允许您使用“ATTR_TIMEOUT”属性,尽管这完全取决于驱动程序是否支持它

最终,我不得不使用一种不知道它是否是最好的解决方案,但它是多种因素的混合:

我已经在使用类似的东西将查询结果保存在CSV文件中,然后将它们提升到会话变量中


我用这种方法生成一个带有查询结果的CSV文件,用php中的脚本发送查询,并设置时间限制(10),然后等待一段时间(10秒),直到查询结果保存在会话变量中。如果时间(10秒)过去了,但我没有将查询保存在会话变量中,我将继续执行下一步操作。

set\u time\u limit是否为整个脚本设置限制?我只需要一个函数或语句的限制。另一方面,我不明白如何应用您在php脚本中链接的答案。这不起作用,如文档所述:在脚本执行之外发生的活动上花费的任何时间,例如使用system()的系统调用、流操作、数据库查询、,当确定脚本已运行的最长时间不是防止SQL注入的方法时,不包括etc。我试图找到一种方法来终止长时间运行的查询,因为我试图通过编程来检测哪个查询比另一个查询更重。您重新编写的标题使您更清楚地了解您要实现的目标,谢谢:)仅使用oci函数我无法做到这一点,不是吗?阅读链接我发现:“以秒为单位指定超时持续时间。并非所有驱动程序都支持此选项。。。但其他驱动程序可能会将其解释为连接或读取超时间隔。“PDO不是一个选项。这将是与PDO建立另一个连接,我使用OCI。