【问题标题】:For loop with Curl request - PHP带有 Curl 请求的 For 循环 - PHP
【发布时间】:2018-05-21 16:16:13
【问题描述】:

我正在检查通讯簿列表(输出为复选框)以查看用户选择了哪些书籍。对于选定的,我使用 curl 通过他们的 API 将它们添加到 ESP。

我有以下代码可以达到预期的结果,但是它会导致页面加载速度很慢,我认为这是因为我循环了一大块 curl 请求多达 15 次(每个地址簿一次) 并想知道是否有人可以帮我整理一下?

$aBook = $_POST['addressBooks'];
$N = count($aBook);

    for($i=0; $i < $N; $i++)
    {
      $content = [
            'email' => $_POST['email']
        ];
        global $baseUrl, $apiUsername, $apiPassword;
        $url = $baseUrl . '/v2/address-books/' . $aBook[$i] . '/contacts';
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt(
            $ch, CURLOPT_HTTPHEADER, array('Accept: application/json',
                                           'Content-Type: application/json')
        );
        curl_setopt($ch, CURLAUTH_BASIC, CURLAUTH_DIGEST);
        curl_setopt(
            $ch, CURLOPT_USERPWD,
            $apiUsername . ':' . $apiPassword
        );
        curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
        curl_setopt($ch, CURLOPT_POSTFIELDS,json_encode($content));

        $response = json_decode(curl_exec($ch));

    }

【问题讨论】:

  • 有多慢?是的,15 个连续的 HTTP 调用会比一个慢 - 您可以使用 curl_multi() lampe2e.blogspot.co.uk/2015/03/… 同时运行它们,但如果连接存在潜在问题,这将无济于事。

标签: php for-loop curl


【解决方案1】:

既然 $abook 是一个数组,为什么不序列化它并只发送一个 curl 请求并进行一次后端处理。如果使用事务触发多个查询会很好。

【讨论】:

  • 嗨,我用 `$aBook = serialize(array($_POST['addressBooks']));` 尝试了这个,并将 curl 请求从 for 循环中取出,但它没有用 - 我我错过了什么?
  • 不是 $_POST['addressBooks'] 已经是一个数组。为什么要将它添加到另一个数组中。
猜你喜欢
  • 1970-01-01
  • 2023-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-14
  • 1970-01-01
相关资源
最近更新 更多