Beispielcode für den "acm" Namensraum?

In diesem Forum kann man Fragen zur Programmierung stellen, die bei der Entwicklung von Mods für phpBB 3.0.x oder dem Modifizieren des eigenen Forums auftauchen.
Forumsregeln
phpBB 3.0 hat das Ende seiner Lebenszeit überschritten
phpBB 3.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 3.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf die neuste phpBB-Version, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Antworten
soldon
Mitglied
Beiträge: 9
Registriert: 16.08.2013 22:47
Wohnort: Dortmund

Beispielcode für den "acm" Namensraum?

Beitrag von soldon »

Hi,

ich kämpfe gerade mit JSON und damit verbundenen externen Datenabfragen von fremden Servern. Da ich nicht bei jedem Seitenaufruf zahllose Requests an die jeweiligen Server absenden möchte - über den Aufruf der entsprechenden URL, dachte ich mir, ich cache die Aufrufe. Die abgerufenen Daten ändern sich nur selten. Jetzt stehe ich ein wenig auf dem Schlauch. Ich komme aus dem Microsoft C#-Lager und bin erst seit kurzer Zeit bei PHP gelandet. Vermutlich ist die Frage daher peinlich. :D

Aber ich frage trotzdem...

Hier der Code, mit dem ich Caching zu implementieren versuche:

Code: Alles auswählen

if(acm::get(!$id))
{
    echo 'Not cached...';
    $json = file_get_contents("http://server/?ids=$id");
    acm::put($id,$json);
    echo 'Stored in cache...';
}  else {
    $json=acm::get($id);
    echo 'Pulled from cache...';
} 
Die erste Frage wäre: Habe ich ein ACM-Objekt zu instantiieren? Es scheint sich nicht um eine statische Klasse/Funktion zu handeln. Es müsste doch bereits ein globales phpBB-ACM-Objekt existieren?

Ich bräuchte dringend etwas Beispielcode, anhand dessen ich die Verwendungsweise dieser Klasse verstehen könnte. Oder ist dieser Ansatz generell falsch und Caching erfolgt generell innerhalb von phpBB? Die PHP-Code-Datei befindet sich ausserhalb der Verzeichnishierarchie von phpBB und funktioniert im Grunde genommen tadellos. Das heißt, ich bekomme mein JSON-Objekt und kann damit arbeiten, nur aber nicht, wenn ich es so implementiere wie oben aufgeführt. Also, mit Caching.
soldon
Mitglied
Beiträge: 9
Registriert: 16.08.2013 22:47
Wohnort: Dortmund

Re: Beispielcode für den "acm" Namensraum?

Beitrag von soldon »

Da antworte ich mir doch glatt mal selbst... :grin:

Ich habe diese Geschichte folgendermaßen gelöst:

Code: Alles auswählen

$cache = new cache('_meinCache');
if($cache->get(!$id))
    {
        echo 'Not cached...';
        $json = file_get_contents("http://server/?ids=$id");
        $cache->put($id,$json);
        echo 'Stored in cache...';
    }  else {
        $json=$cache->get($id);
        echo 'Pulled from cache...';
    }
Das funktioniert anscheinend. Schon beim ersten Aufruf komme ich in den "Pulled from Cache"-Zweig. Was ein wenig seltsam ist aber solange es funktioniert...

Jetzt hätte ich bloß noch die Frage, ob man das auch so handhabt? Oder ist von dieser Vorgehensweise abzuraten?
Benutzeravatar
Miriam
Mitglied
Beiträge: 12310
Registriert: 13.10.2004 07:18
Kontaktdaten:

Re: Beispielcode für den "acm" Namensraum?

Beitrag von Miriam »

Sollte das nicht eher so aussehen?
if(!$cache->get($id))
Gruss, Miriam.
Ich schmeiß' alles hin und...
... lasse es liegen
soldon
Mitglied
Beiträge: 9
Registriert: 16.08.2013 22:47
Wohnort: Dortmund

Re: Beispielcode für den "acm" Namensraum?

Beitrag von soldon »

Ja, du hast recht. Zwischenzeitlich war mir das auch aufgefallen... :D

Im Moment frage ich mich allerdings, ob man einen neuen Cache mit einem eindeutigen Namen anlegt und dann über eine ID, bzw. einen Variablennamen in diesen Cache schreibt oder ob man jeweils eindeutige bezeichnete Caches erstellt?

Entweder so:

Code: Alles auswählen

$cache = new cache('_meinCache'); 
oder so

Code: Alles auswählen

$cache = new cache('_meinCache' . $id); 
Kann ein angelegter Datei-Cache als Cache-Container fungieren oder habe ich bei 10000 abzufragenden Datensätzen per JSON 10000 einzelne Cache-Dateien?
Antworten

Zurück zu „[3.0.x] Mod Bastelstube“