【发布时间】:2018-03-14 11:13:29
【问题描述】:
我正在开发一个需要在 PHP 中调用 Oracle 过程的 Web 服务。 Oracle 过程需要一些时间来处理,完成后它将写入表中。
如果过程调用耗时过长,如何在 Web 服务响应中返回错误?
注意:我被 PHP 5.2 卡住了,无法安装 cURL。
【问题讨论】:
-
php 整个脚本执行的默认时间限制为 30,这是否足够?如果您没有禁用该功能,您也可以按脚本修改它。php.net/set_time_limit
-
您可以使用 set_time_limit() 设置一般时间限制;可以在此线程中找到更具体的解决方案:stackoverflow.com/questions/10587323/timeout-a-function-in-php - 我想您可以使用 pcntl_alarm() 函数来管理它。
-
您无法捕获最大执行时间错误。脚本以及随后的所有处理都停止了。我需要返回一些东西,比如如果它发生了一条消息。
-
数据库中的用户配置文件和 sqlnet.ora 参数(如 recv_timeout)的组合是最好的方法。 PHP 的 max_execution 时间是用于 PHP 代码的时间,并且在调用等待 DB 时不会/没有得到检查。
标签: php oracle web-services