Alpha Vantage客户端太慢了

时间:2018-03-24 12:17:29

标签: php rest finance alphavantage

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

<?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文件加载时间仅为几分之一。

有谁知道我哪里出错了?

2 个答案:

答案 0 :(得分: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只股票的日内数据。

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

  

outputsize =紧凑

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

答案 1 :(得分:0)

更新:Batch Stock Quotes

您可能也想考虑使用这种类型的查询。多个股票报价全部在一个电话中。

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

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

如果您的喜好太慢,请尝试增加内存限制。

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

此外,如果您有共享托管,则可能成为问题。但是,我对您的服务器不够了解,无法完全回答。