【问题标题】:Random 408 http code with CURL in PHPPHP中带有CURL的随机408 http代码
【发布时间】:2012-04-19 22:16:55
【问题描述】:

我在 php 中发出的 CURL 请求有问题。问题是它在随机时间返回超时。我注意到的是,在我添加自定义错误页面后,404 自定义页面可以工作,但使用 curl 完成后 408 页面什么也不返回。

404 页面示例:http://emailingrestauraweb.com/qweqwe

下面是我的php代码:

$strCookie = 'PHPSESSID=' . $this->SessionID;
$curl_log = fopen("curl.txt", 'w');
//Setup connection
$curl = curl_init();
curl_setopt_array($curl,array(
        CURLOPT_URL => $URL,
        CURLOPT_USERAGENT=>$this->UserAgent,
        CURLOPT_POST =>true,
        CURLOPT_POSTFIELDS => http_build_query($arrParams, null, '&'),
        CURLOPT_COOKIE => $strCookie,
        CURLOPT_COOKIESESSION=>1,
        CURLOPT_HEADER => 1,
        CURLOPT_VERBOSE         => 0,           // Logs verbose output to STDERR
        CURLOPT_SSL_VERIFYPEER  => 0,           // Do not verify certificate
        CURLOPT_TIMEOUT => 300,
        CURLOPT_CONNECTTIMEOUT=>260,
        CURLOPT_NOSIGNAL => 1,
        CURLOPT_RETURNTRANSFER=>1
    ));

    //Send request
    $result_json = curl_exec($curl);
    $error_code =curl_getinfo($curl, CURLINFO_HTTP_CODE);
    curl_close($curl);

我尝试了所有我不知道为什么会发生这种情况的方法,而且它也是随机的。

更新 1

我在 2 个 slicehost 切片上运行脚本。我从一个切片到另一个切片向 api 发出请求。 api 是一个用于发送电子邮件的 OEMPRO 软件。 我知道 408 表示超时,但这似乎是随机的,而且大多数时候它像块一样重复,我想知道这是否可能是该软件可能使用的东西。

这个问题是在我运行 OEMPRO 的域过期 3 天之后发生的,然后它又回来了,现在我遇到了这个问题......

感谢大家的回答。

【问题讨论】:

  • 408 是超时...你知道的,对吧?
  • 这些错误页面也是PHP吗?任何 htaccess 以及?
  • 是的,我知道 408 是超时。问题是如果您为超时定义了一个错误页面,那么它为什么不显示。这可能是我的卷曲中的错误吗?这就是我想表达的真诚。
  • @HappyTimeGopher 错误页面是获取代码并显示消息的单个 php 页面。

标签: php curl random


【解决方案1】:

您说您的域已过期 3 天。这很可能是 DNS 解析问题。给它 24-48 小时,让我们知道是否有任何变化。

【讨论】:

  • 是的,今天确实如此,似乎错误不会发生,我经常会进一步尝试,看看是否发生 408,如果不是这似乎是答案。谢谢。
【解决方案2】:

408 通常不返回(包含)响应正文。服务器只想关闭与您的连接,不想再为您的缓慢请求而烦恼。

当然,该标准允许传递一个主体,如果您保守地阅读它,它甚至应该返回该实体以进行解释,但是,不要依赖它。反正没有消息。请重试请求。

【讨论】:

  • 这绝对不是真的。 I 408 可能会返回响应正文,规范中不允许这样做:tools.ietf.org/html/rfc2616#section-10.4.9
  • 我明白你的意思,我很坚持,但我注意到的是,即使我递归地提出请求,答案仍然是 408 大约 20 秒或更长时间......而且看起来像来自服务器的一个块。我在 slicehost 下的 2 个切片上运行这些脚本,我想知道你们之前是否遇到过这个问题?
猜你喜欢
  • 1970-01-01
  • 2016-04-08
  • 2023-01-13
  • 2012-04-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-01
相关资源
最近更新 更多