Heim >Backend-Entwicklung >PHP-Problem >So implementieren Sie eine PHP-Warteschlange
So implementieren Sie die Warteschlange in PHP: Erstellen Sie zuerst eine neue Datei „artisan.php“, führen Sie dann die Warteschlange über „php artisan“ aus und geben Sie schließlich den Befehl „lpush listname a b c d e f g“ ein.
Empfohlen: „PHP-Video-Tutorial“
Prinzip der PHP-Warteschlangenimplementierung (Laravel)
Jeder, der das Laravel-Framework verwendet hat, weiß, dass es eine eigene Warteschlangenfunktion hat. PHP ist nur ein Skript mit einem Timeout-Mechanismus. Warum können wir die Warteschlange weiterhin ausführen?
Wir erstellen eine neue Datei queue.php
<?php while(true){ echo 1; sleep(1); }
Dann führen wir php queue.php in der Befehlszeile aus
Sie werden feststellen, dass jede Sekunde eine 1 ausgegeben wird, eh, es ist erstaunlich, warum das so ist Gibt es kein PHP-Timeout?
Ja, es kommt nicht zu einer Zeitüberschreitung. Warum?
A: Tatsächlich kommt es beim PHP-Ausführungsskript nicht zu einer Zeitüberschreitung, z. B. 504, sind die von Apache, Nginx und PHP festgelegten Zeitüberschreitungen Dies wird durch die Zeit bestimmt, da die PHP-Befehlszeilenausführungsdatei nicht die PHP-Konfigurationsdatei verwendet und daher standardmäßig keine Zeitüberschreitung aufweist.
ps -ef | grep php
Sie werden feststellen, dass es einen PHP-Warteschlangenprozess gibt.
Wir haben das Problem des PHP-Timeouts gelöst Warteschlange
Erstellen wir ein neues Fenster, rufen Sie den Redis-Client auf und geben Sie den folgenden Befehl ein
<?php $redis = new Redis(); $redis->connect('127.0.0.1',6379); while(1){ $res = $redis->lpop('listname'); if($res){echo $res."\r\n";} sleep(1); }
Sie werden feststellen, dass die Warteschlange von PHP Artisan kontinuierlich den Wert ausgibt, den ich gerade in Redis verschoben habe.
Tatsächlich basiert die Warteschlange von Laravel Nach diesem Prinzip unterstützt es nicht nur Redis als Träger, sondern Sie können auch weitere andere Datenbanken verwenden. Jemand wird fragen: Wenn ich php artisan.php starte, ist es dann nutzlos, wenn ich das Fenster schließe? , nein, Linux kann immer noch im Hintergrund ausgeführt werden
Fügen Sie einfach ein & nach dem Befehl hinzu, oder nohup... $, um es im Hintergrund auszuführen. Natürlich können Sie es auch zur geplanten Ausführung von crontab hinzufügen.
lpush listname a b c d e f g
Das obige ist der detaillierte Inhalt vonSo implementieren Sie eine PHP-Warteschlange. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!