HTTP 上的 curl 如何知道在哪里响应

HTTP 上的 curl 如何知道在哪里响应

这听起来可能是一个愚蠢的问题,可能只是 HTTP 协议的一部分,但对于调试我遇到的问题可能很重要。

我们有一些 PHP 代码,使用 php-curl 函数从 API 中获取响应并保存它。该代码在我们的开发和暂存服务器上运行良好,但在进入负载平衡生产设置时会中断。为了测试我的理智,我从负载平衡器中拉出一台服务器并再次运行它,它没有产生错误。

所以我怀疑这是由于负载均衡器造成的。打开 curl 时,它是否说记录主机的 IP 以进行返回寻址?它是否可以抓取负载均衡器的 IP,然后返回到任何未打开连接的任意服务器以等待响应?

我已经看到,有多种方法可以解决负载均衡器后面的特定 IP /资源,但没有看到任何确保响应返回发起者的方法。

编辑细节:生产站点托管在 6 个节点上,Rackspace 上的 1 个负载均衡器使用完全相同的代码。我对负载均衡器的操作(如打开端口)有 1% 的控制权,因此我需要确定问题是否出在它身上。curl 代码正在处理第三方 API,我们必须将其视为黑盒(可能也是负载均衡的)。

带有混淆/简化的代码:

// Check that we have a Video ID value and it's not empty, check if the created date has changed
if (isset($node->field_video_id['und'][0]['value']) && $node->field_video_id['und'][0]['value'] != '' && $node->created != $node->original->created) {


  $result = db_query('SELECT value FROM {livestream_event} WHERE video_id='. $node->field_video_id['und'][0]['value'] . '');

    foreach($result as $item) {
        $event_id = $item->value;
    }

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, "http://<API IP>/livestreamauth.php");
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $token_data = curl_exec($ch);
    $token_data = json_decode($token_data);

    // use all the data and persist to db once it theoretically gets back.
}

相关内容