Несколько запросов ColdFusion Запутываются Возвращая неверные значения

Я разрабатываю API, который ищет карты игроков для покупки в FIFA 14.

Я делаю 600 индивидуальных запросов в минуту примерно для 15 разных игроков, которые размещаются на 3 разных страницах, и каждый отдельный запрос возвращает до 50 результатов каждый раз.

Каждая страница выполняет запрос к созданной мной таблице (lowerBuyNowPrice), которая обновляется каждые 10 минут с самой низкой ценой покупки сейчас, доступной на рынке, и я сравниваю это значение со значением текущего результата.

Однако я покупал карты в 2 или 3 раза больше, чем значение в таблице наименьшего BuyNowPrice, которое никогда не должно происходить.

Я настроил несколько других таблиц, чтобы попытаться выяснить, что происходит, и похоже, что запросы возвращают результаты для идентификатора игрока, отличного от того, который он должен.

<cfscript>

// SEARCH FOR PLAYER
Variables.doSearch = Application.cfcs.Search.doPlayerSearch(Variables.search2PlayerID,0,"",0,0,0,0,0,Variables.searchPhishingKey,Variables.searchSessionKey);
Variables.searchResults = DeserializeJSON(Variables.doSearch.FileContent);
Variables.numResults = ArrayLen(Variables.searchResults.auctionInfo);
</cfscript>

<!--- GET LATEST LOWEST BIN PRICE --->
<cfquery name="qryBINPrice" datasource="sfadb">
SELECT assetID,playerPosition,lowestBIN FROM FUT14PlayerBIN WHERE binID IN (SELECT MAX(binID) AS binID FROM FUT14PlayerBIN WHERE assetID = #Variables.search2PlayerID# GROUP BY assetID,playerPosition)
</cfquery>

<cfscript>

    // LOOP ROUND RESULTS
    for (i=1; i<=Variables.numResults; i++) {

        // IF ASSET ID OF CURRENT CARD IS SAME AS ONE SEARCHING FOR
        if (Variables.searchResults.auctionInfo[i].itemData.assetID EQ Variables.search2PlayerID) {

            // DEFAULT BUY CARD VARIABLE
            Variables.buyCard = 0;

            // GET POSITION AND STYLE BIN
            Variables.getLowestBIN = Application.cfcs.Player.QoQ(qryBINPrice,"lowestBIN","playerPosition = '#Variables.searchResults.auctionInfo[i].itemData.preferredPosition#'");

            // IF LOWEST BIN RECORD EXISTS
            if (Variables.getLowestBin.RecordCount GT 0) {
                // SET LATEST LOWEST BIN PRICE
                Variables.lowestBIN = getLowestBIN.lowestBIN;

                // SET BUYING PRICE
                Variables.buyingPrice = Variables.lowestBIN * 0.9;

                // IF BIN PRICE SET AND IS LESS THAN SET BUYING PRICE
                if (Variables.searchResults.auctionInfo[i].buyNowPrice GT 0 AND Variables.searchResults.auctionInfo[i].buyNowPrice LTE Variables.buyingPrice) {
                    Variables.timeLeft = Variables.searchResults.auctionInfo[i].expires;
                    Variables.auctionEnds = DateAdd("s",timeLeft,Now());
                    Variables.insStuff = Application.cfcs.Bid.insStuff(Variables.searchResults.auctionInfo[i].itemData.assetID,Variables.searchResults.auctionInfo[i].itemData.preferredPosition,Variables.searchResults.auctionInfo[i].itemData.playStyle,Variables.lowestBIN,Variables.binPrice,Variables.startPrice,Variables.basePrice,Variables.buyingPrice,qryBINPrice.assetID,Variables.searchResults.auctionInfo[i].buyNowPrice);
                    Variables.doBuyCard = Application.cfcs.Bid.doBIN(Variables.searchResults.auctionInfo[i].tradeID,Variables.searchResults.auctionInfo[i].buyNowPrice,Variables.startPrice,Variables.binPrice,Variables.searchResults.auctionInfo[i].itemData.ID,Variables.searchResults.auctionInfo[i].itemData.assetID,Variables.searchResults.auctionInfo[i].itemData.resourceID,Variables.searchResults.auctionInfo[i].itemData.cardSubTypeID,Variables.searchResults.auctionInfo[i].itemData.playStyle,Variables.searchResults.auctionInfo[i].itemData.preferredPosition,Variables.searchResults.auctionInfo[i].startingBid,Variables.searchResults.auctionInfo[i].buyNowPrice,Variables.lowestBIN,Variables.searchResults.auctionInfo[i].currentBid,Variables.searchResults.auctionInfo[i].itemData.discardValue,Variables.auctionEnds);
                }
            }
        }
    }
}
</cfscript>

Вероятно, это связано с объемом запросов, сделанных за такое короткое время, но я понятия не имею, как я могу изменить это, чтобы гарантировать, что правильная запись всегда возвращается?

У кого-нибудь есть идеи?

0 ответов

Другие вопросы по тегам