【问题标题】:Alpha Vantage client too slowAlpha Vantage 客户端太慢
【发布时间】:2018-03-24 12:17:28
【问题描述】:

我有一个非常简单的对 Alpha Vantage API 的 PHP 调用,以用纳斯达克股票价格填充表格(或列表):

<?php
function get_price($commodity = "")
{

  $url = 'https://www.alphavantage.co/query?function=TIME_SERIES_DAILY_ADJUSTED&symbol=' . $commodity . '&outputsize=full&apikey=myKey';
  $obj = json_decode(file_get_contents($url), true);
  $date = $obj['Meta Data']['3. Last Refreshed'];
  $result = $obj['Time Series (Daily)']['2018-03-23']['4. close'];
  $rd_result = round($result, 2);
  echo $result;
}

?>
<?php get_price("XOM");
  get_price("AAPL");
  get_price("MSFT");
  get_price("CVX");
  get_price("CAT");
  get_price("BA");
?>

它确实有效,但速度太慢了。它可能需要超过 30 秒。加载 Alpha Vantage 的 json 文件在几分之一秒内加载。

有谁知道我哪里出错了?

【问题讨论】:

  • 当我尝试访问这些 URL 时,我需要大约 2-4 秒才能完全获取它们(每个)。尝试您的代码时,执行它大约需要 16-18 秒,这是正确的,因为您要获取 6 个 URL。如果他们的 API 稍微滞后(或者您的服务器确实滞后,因为您同时获取大量数据),则有时可能需要更长的时间。
  • 是的,但肯定必须有其他方法来加快处理速度(即同时进行所有调用,而不是连续调用),因为想象我想获得一个包含所有 100 个的简单列表纳斯达克的公司,这是相当合理的事情,需要几分钟才能将它们全部获取......
  • 有 PHP 库用于发出异步 HTTP 请求。您可以搜索一些并尝试一下,看看它们是否适合您。

标签: php rest finance alpha-vantage


【解决方案1】:

这是我在 API 需要时间回复时所做的,我的解决方案是用 C# 编写的,但逻辑是相同的。

    string[] AlphaVantageApiKey = { "RK*********", "B2***********", 4FD*********QN", "7S3Z*********FRX", "U************I3" };
    int ApiKeyValue = 0;
    foreach (var stock in listOfStocks)
    {
        DataTable dtResult = DataRetrival.GetIntradayStockFeedForSelectedStockAs(stock.Symbol.Trim().ToUpper(), ApiKeyValue);
        ApiKeyValue = (ApiKeyValue == 4) ? 0 : ApiKeyValue + 1;
    }

在查询数据时,我使用 5 到 6 个不同的 API 密钥。我为每个电话循环想到了他们每个人。通过减少一个垂直标记的负载。

我观察到这大大提高了我的表现。我用了不到 1 分钟的时间来获得 50 只股票的盘中数据。

另一种提高性能的方法是使用

输出大小=紧凑

compact 只返回时间序列中最新的 100 个数据点。

【讨论】:

    【解决方案2】:

    更新:Batch Stock Quotes

    您可能还想考虑使用这种类型的查询。一次调用多个股票报价。

    此外,如果适用,使用完整输出大小是从过去 20 年获取数据。将其从您的查询中取出,并让 API 使用其压缩输出默认值。


    编辑:根据上述内容,您应该对查询进行更改。但这也可能是您的服务器 的问题。我针对我正在处理的一个用例对此进行了测试,我需要几秒钟来获取数据,尽管我一次只为一个页面上的一个股票代码提取它。

    如果速度太慢而不符合您的喜好,请尝试增加您的内存限制。

    <?php
      ini_set('memory_limit','500M'); // or your desired limit
    ?>
    

    另外,如果您有共享主机,那可能就是问题所在。但是,我对您的服务器了解不多,无法完全回答。

    【讨论】:

    • 链接没有提到“批量报价”...?
    猜你喜欢
    • 1970-01-01
    • 2016-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多