我有一个 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
没有致命异常的情况下退出通话,除了致命异常之外的任何事情都可以。