【问题标题】:Timeout not working in PHP Httpful request超时在 PHP Httpful 请求中不起作用
【发布时间】:2017-02-22 13:30:08
【问题描述】:

我有一个 http 请求,我正在使用“Httpful Request”在 PHP 中发送它。 我也在请求中设置了 20 秒的超时时间,如下所示:

$req = Request::get($Url);
$response = $req->timeoutIn(20)->expectsHtml()->send();

我期待在超时发生后得到一个异常,我可以处理这个异常。但我收到以下 php 致命错误。为什么会这样?

PHP 致命错误:超过 30 秒的最大执行时间 phar://C:/CapPortal/cpPortal/source/wordpress/httpful.phar/Httpful/Request.php 在第 202 行

【问题讨论】:

  • 可能是您正在做一些 11 秒长的事情,然后在 PHP 放弃之前再等待 19 秒。如果你设置 timeoutIn(1) 会起作用吗?
  • 您指出的是正确的。正如@robske_110 所说,在我的请求解决问题之前 set_time_limit(30)。

标签: php httpful


【解决方案1】:

如果您需要更多执行时间,您可以使用set_time_limit($seconds) 将该限制设置得更高。您也可以将其设置为 0,这意味着无限。警告:Apache(如果你使用 php 的话)也可能会限制 php 的执行时间。

【讨论】:

  • 我不想更改 php 时间限制。我在我的请求中设置了一个超时,以便在 php 最大执行时间到达之前捕获异常。
  • 我在我的请求解决问题之前添加了 set_time_limit(30)。谢谢。
【解决方案2】:

httpful 模块本身有一些设置超时的方法,名称是timeoutIn()。 因此,您可以将此方法添加到您的代码中并设置超时,例如设置为 50 秒:

$response = $req->timeoutIn(20)->expectsHtml()->timeoutIn(50)->send();

对我来说很好用。

【讨论】:

    猜你喜欢
    • 2014-08-20
    • 1970-01-01
    • 1970-01-01
    • 2012-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多