【问题标题】:Stop PHP function after a certain time limit在一定时间限制后停止 PHP 函数
【发布时间】: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


【解决方案1】:

您考虑过使用http://php.net/manual/en/function.set-time-limit.php 吗?

设置允许脚本运行的秒数。如果达到此值,脚本将返回致命错误。默认限制为 30 秒,如果存在,则为 php.ini 中定义的 max_execution_time 值。

您可以为您的特定脚本设置它少于 30 秒,因此它会在例如几秒钟。然后你只需处理空响应/错误响应。

【讨论】:

    【解决方案2】:

    在 php.ini 中默认执行时间限制为 30 秒...自定义它并在 try catch 中编写代码并使用自定义错误消息处理异常。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-12-13
      • 1970-01-01
      • 2013-09-28
      • 1970-01-01
      • 1970-01-01
      • 2015-11-19
      • 1970-01-01
      相关资源
      最近更新 更多