0

我有一个 PHP 模块,它使用调用从 Oracle DB 中获取数据 oci_Execute(statement);

现在根据用户提供的搜索参数,搜索有时可能需要 30 分钟以上。在这种情况下,我想取消搜索(在 PHP 级别)并通知用户重新考虑搜索参数。

max_execution_time我尝试通过在php.ini文件中设置 PHP 超时变量。我已经在 apache 文件中设置了一个ErrorDocument 404重定向httpd.conf(它适用于未找到的 php 页面)。但是,当 php 超时并且 oci_execute 仍在处理时,PHP 会抛出致命异常并崩溃。

我已经尝试过 try/catch 并且知道它不适用于致命错误。我曾尝试通过 注册关闭功能register_shutdown_function,但在致命错误之后永远无法到达。我曾尝试设置 apache 超时指令,但它们在 PHP 脚本存在的情况下永远不会生效。

我希望 apache 或 PHP 以错误代码响应并重定向到一个页面,上面写着“亲爱的用户请重新考虑您的搜索参数”:) 目前我在 oci_Execute 行生成超时后看到一个致命异常。

重新表述问题;我怎样才能在oci_execute没有致命异常的情况下退出通话,除了致命异常之外的任何事情都可以。

4

1 回答 1

0

在 Oracle 数据库级别,您可以通过更改配置文件来设置资源限制。当您达到资源限制时,您应该能够从 Oracle 捕获“错误”。

更改配置文件:http : //docs.oracle.com/cd/E11882_01/server.112/e26088/statements_2008.htm#SQLRF00813

于 2012-09-06T13:14:18.667 回答