Apache-PHP max_execution_time致命异常处理

时间:2012-09-06 11:39:29

标签: php oracle apache timeout fatal-error

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

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

我尝试在max_execution_time文件中设置PHP超时变量php.ini。我在apache ErrorDocument 404文件中设置了httpd.conf重定向(并且在找不到php页面时效果很好)。但是,当php超时且oci_execute仍在处理时,PHP会抛出致命异常并崩溃。

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

我想要apache或PHP响应错误代码并重定向到一个页面,说'亲爱的用户请重新考虑你的搜索参数':)我看到在oci_Execute行生成超时后发生致命异常。

改写问题;如何在没有致命异常的情况下退出oci_execute电话,除了致命异常之外什么都行不通。

1 个答案:

答案 0 :(得分:0)

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

ALTER PROFILE: http://docs.oracle.com/cd/E11882_01/server.112/e26088/statements_2008.htm#SQLRF00813