我有一个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
电话,除了致命异常之外什么都行不通。
答案 0 :(得分:0)
在Oracle数据库级别,您可以通过更改配置文件来设置资源限制。当您达到资源限制时,您应该能够从Oracle捕获“错误”。
ALTER PROFILE: http://docs.oracle.com/cd/E11882_01/server.112/e26088/statements_2008.htm#SQLRF00813