2016-06-04 7 views
1

Ich arbeite derzeit an einem Projekt, das eine Website beinhaltet, die Daten von einer Spiel-API erhält.Verfolgen Sie einen globalen Wert auf einer Website

Problem ist, ich bin an eine bestimmte Rate Limit (von derzeit 500 Anfragen pro 10 Minuten) gebunden, die ich nicht überschreiten darf.

Wie behalte ich die aktuelle Anzahl der Anfragen außer Schreiben/Lesen in eine Datei/Datenbank jedes Mal, wenn jemand die Daten anfordert (ich denke, das wäre nicht der beste Ansatz und könnte möglicherweise zu Problemen führen mit ein paar houndred Menschen die Website zur gleichen Zeit zugreifen)

die Website ruft ein pHP-Skript mit notwendigen Informationen der Benutzer die Daten aus der API erhalten bietet

Antwort

0

Sie können APC dafür verwenden.

Der Alternative PHP Cache (APC) ist ein freier und offener Opcode-Cache für PHP. Ihr Ziel ist es, ein freies, offenes und robustes Framework für die Zwischenspeicherung und Optimierung von PHP-Zwischencode zu bieten.

Sie benötigen keine externe Bibliothek, um diese Erweiterung zu erstellen. Speicher und eine Variable über Anfragen zu holen ist so einfach wie diese:

<?php 
    $bar = 'BAR'; 
    apc_add('foo', $bar); 
    var_dump(apc_fetch('foo')); 

    echo "\n"; 

    $bar = 'NEVER GETS SET'; 
    apc_add('foo', $bar); 
    var_dump(apc_fetch('foo')); 
    echo "\n"; 
?> 

Here die Dokumentation ist.

0

Da alle Anfragen getrennt sind, sie nicht weiß etwas über die anderen Anfragen. Es gibt keine Möglichkeit, eine "shared" Variable in PHP zu haben.

Der beste Weg ist wahrscheinlich, eine Datenbanktabelle zu erstellen und einen Datensatz dort zu erstellen, wenn Sie eine Anfrage machen. Verfolgen Sie, wann jede Anfrage mit einer Datetime-Spalte durchgeführt wurde. Auf diese Weise können Sie schnell überprüfen, wie viele Anfragen in den letzten 10 Minuten durch das Zählen der Datensätze in den letzten 10 Minuten durchgeführt wurden.

Führen Sie gelegentlich eine generische Löschabfrage auf der Tabelle aus.

Eine einfache Abfrage wie das wird nicht wirklich Ihre Leistung verletzen, wenn Sie eine wirklich beschäftigt Website haben.

Eine andere Lösung könnte sein, die Ergebnisse von der API zwischenzuspeichern und die Ergebnisse für jede Anfrage wiederzuverwenden. Aktualisieren Sie dann die Ergebnisse von der API etwa alle paar Sekunden (1 Anfrage alle 2 Sekunden endet bei 300/10 Minuten). Das würde jedoch erfordern, dass die Daten tatsächlich cache-fähig und wiederverwendbar sind.

Verwandte Themen