Seite wählen

PHP SPL: Queue

von | Aug 7, 2014 | Development

Wer mit PHP eine performante Warteschlange realisieren will, dem sei es mit einer SplQueue geholfen, die ebenfalls ab  der PHP Version 5.3.0 vorhanden ist.
Die Funktionsweise an sich ist relativ einfach, die SplQueue arbeitet nach dem FIFO Prinzip und implementiert die SplDoublyLinkedList über die bereits Matthias einen Beitrag verfasst hatte.
Die wichtigsten Methoden sind:

  • enqueue() – Element ans Ende der Warteschlange hinzufügen.
  • dequeue() – Das Erste Element aus der Warteschlange herausnehmen.

Folgendes Beispiel soll die Nutzung verdeutlichen:

enqueue('research');
$queue->enqueue('planning');
$queue->enqueue('development');
$queue->dequeue();
$queue->dequeue();
echo $queue->top() . PHP_EOL; // development

Und da wir bei einer SplQueue über den ArrayAccess-Interface verfügen, können wir die Elemente auch nach dem folgenden Schema hinzufügen.

dequeue();
$queue->dequeue();
echo $queue->top() . PHP_EOL; // development

Ein praktischer Einsatz von SplQueue wäre mit Sicherheit es in PHP Daemons zu verwenden, wo auf Performance und geringen Speicherverbrauch Wert gelegt wird.
Wer mehr Beispiele haben will oder herausfinden will wo die SplQueue alles verwendet wird, kann sich durchs GitHub durchstöbern.

0 Kommentare

Einen Kommentar abschicken

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Mehr Beiträge zum Thema Development

Mein PHP-Trainingsprojekt

PHP Schulung Vor kurzem haben wir begonnen, eine neue Programmiersprache zu lernen – PHP. In der ersten Woche haben wir mit den Grundlagen wie Variablen, Arrays, Schleifen begonnen und uns schrittweise zu komplizierterer Syntax wie Funktionen, Objekten und Klassen...

check_prometheus ist jetzt öffentlich verfügbar!

Monitoring ist komplex, das wissen wir hier bei NETWAYS leider zu gut. Deswegen laufen in der Infrastruktur auch mal gerne mehrere Tools für die Überwachung. Zwei gern gesehene Kandidaten sind dabei Icinga und Prometheus. Icinga und Prometheus erfüllen...