Heim >PHP-Framework >Denken Sie an PHP >Werden Sie thinkphp-queue in ThinkPHP5 verwenden?
Die folgende Tutorial-Kolumne des thinkphp-Frameworks wird Ihnen die Verwendung von thinkphp-queue in ThinkPHP5 vorstellen. Ich hoffe, dass es für Freunde in Not hilfreich sein wird!
Kürzlich erhielt der Redakteur eine Nachricht von Freunden in der Gruppe, die nicht wissen, wie man PHP-Queue verwendet, wenn man das ThinkPHP5.0-Framework verwendet (es ist wirklich peinlich, dazu gibt es im Internet viele Kommentare (Tutorial). Haha, es spielt keine Rolle, wenn Sie nicht darauf verweisen möchten. Lassen Sie mich es im Detail durchgehen ~~ Was ist eine Warteschlange? Was löst die Warteschlange? Welche Szenarien gibt es für Warteschlangen? ... usw. Entwickler sollten diese Probleme zunächst selbst verstehen. Darüber hinaus werden in diesem Fall nur bestimmte Vorgänge im ThinkPHP-Framework ausgeführt.
1. thinkphp-queue installieren
Es wird empfohlen, Composer für die Installation zu verwenden, in das Stammverzeichnis des Projekts zu wechseln und Folgendes auszuführen: composer require topthink/think-queue
2. Konfigurieren Sie die Speicherumgebung der Nachrichtenwarteschlange
Die Konfigurationsdatei befindet sich in applicationextraqueue.php, wie in der Abbildung gezeigt:
Verwendung Wenn die Redis-Umgebung nicht installiert ist, installieren Sie sie ganz einfach selbst, oder Sie können auch andere Treibertypen verwenden, wie in der Abbildung gezeigt:
3 von Aufgaben
Wir erstellen eine benannte Index.php-Datei unter dem Indexmodul. Die Methode der Warteschlange (muss so sein? Natürlich nicht, dieses Tutorial ist nur ein Beispiel, Sie können ein neues Modul erstellen und das Methodenname kann anders sein), wie in der Abbildung gezeigt:
4. Aufgabennachrichtenverbrauch und Löschverarbeitung
Wir erstellen eine Jobdatei unter dem Indexmodul, die zur Verarbeitung des Verbrauchsmodus verwendet wird, wie in der Abbildung gezeigt:
Erstellen Sie unter der Demo-Klasse eine Feuermethode, die als Methode bezeichnet wird standardmäßig von der Nachrichtenwarteschlange gesendet. Wie im Bild gezeigt:
Das Obige ist die Erstellung der abgeschlossenen Aufgabe – „Push--“Verbrauch.
Führen Sie im Browser oder Terminal unsere Methode index/queue.html aus, um die Erstellung und den Push abzuschließen. Sie können sich auf den Befehl beziehen und zum Stammverzeichnis des Projekts im Terminal wechseln:
5. Überwachen Sie Aufgaben und führen Sie
php think queue:listen php think queue:work –daemon(不加–daemon为执行单个任务)
aus. Für bestimmte optionale Parameter können Sie den Befehl „–help“ eingeben, der mit verwendet werden kann Supervisor, um sicherzustellen, dass der Prozess resident ist
1.1 Befehlsmodus
queue:subscribe command [As vom 15.02.2017 hat der Autor diesen Modus noch nicht implementiert, überspringen]php think queue:work --queue helloJobQueuequeue:listen-Befehl
Das Kind Der Prozess verwaltet die Nachrichtenwarteschlange und begrenzt die Ausführungszeit des Arbeitsprozesses.
php think queue:listen --queue helloJobQueue
proc_open(‘php think queue:work’)
2.2 Befehlszeilenparameter
Arbeitsmodusphp think queue:work \ --daemon //是否循环执行,如果不加该参数,则该命令处理完下一个消息就退出 --queue helloJobQueue //要处理的队列的名称 --delay 0 \ //如果本次任务执行抛出异常且任务未被删除时,设置其下次执行前延迟多少秒,默认为0 --force \ //系统处于维护状态时是否仍然处理任务,并未找到相关说明 --memory 128 \ //该进程允许使用的内存上限,以 M 为单位 --sleep 3 \ //如果队列中无任务,则sleep多少秒后重新检查(work+daemon模式)或者退出(listen或非daemon模式) --tries 2 //如果任务已经超过尝试次数上限,则触发‘任务尝试次数超限’事件,默认为0
php think queue:listen \ --queue helloJobQueue \ //监听的队列的名称 --delay 0 \ //如果本次任务执行抛出异常且任务未被删除时,设置其下次执行前延迟多少秒,默认为0 --memory 128 \ //该进程允许使用的内存上限,以 M 为单位 --sleep 3 \ //如果队列中无任务,则多长时间后重新检查,daemon模式下有效 --tries 0 \ //如果任务已经超过重发次数上限,则进入失败处理逻辑,默认为0 --timeout 60 //创建的work子进程的允许执行的最长时间,以秒为单位
-Parameter nicht enthalten ist. Der Grund wird unten erklärt
--deamon
nohup php think queue:work --daemon --queue 任务名称 & nohup php think queue:work --daemon --queue 任务名称 &
Um die Anzahl der Aufgaben in Linux zu überprüfen, können Sie Folgendes eingeben: jobs -l
Das obige ist der detaillierte Inhalt vonWerden Sie thinkphp-queue in ThinkPHP5 verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!