Heim >Backend-Entwicklung >PHP-Tutorial >Womit wird Multi-Processing auf dem PHP-Server implementiert?
Das PHP-Backend fordert eine große Datenmenge von anderen Stellen an und stellt sie in Form eines Arrays dar. Diese Daten müssen einzeln in die Datenbank geschrieben werden. Ein einzelner Prozess ist zu langsam Verwenden Sie mehrere Prozesse, um dies zu erreichen.
Ich habe einige Informationen überprüft und die Reihe von Funktionen pcntl_** bemerkt, aber es scheint, dass diese nur in der Befehlszeile ausgeführt werden können und nicht auf dem Server verwendet werden können
Gibt es Gibt es eine Möglichkeit, diese Anforderung zu erfüllen?
Bitte zögern Sie nicht, es mir beizubringen!
Das PHP-Backend fordert eine große Datenmenge von anderen Stellen an und stellt sie in Form eines Arrays dar. Diese Daten müssen einzeln in die Datenbank geschrieben werden. Ein einzelner Prozess ist zu langsam Verwenden Sie mehrere Prozesse, um dies zu erreichen.
Ich habe einige Informationen überprüft und die Reihe von Funktionen pcntl_** bemerkt, aber es scheint, dass diese nur in der Befehlszeile ausgeführt werden können und nicht auf dem Server verwendet werden können
Gibt es Gibt es eine Möglichkeit, diese Anforderung zu erfüllen?
Bitte zögern Sie nicht, es mir beizubringen!
Was Sie brauchen, sind nicht mehrere Prozesse, sondern eine Nachrichtenwarteschlange
Nachdem der Webserver die Anfrage empfangen hat, verschiebt er eine Nachricht in die Nachrichtenwarteschlange und gibt dann direkt das Browserergebnis zurück (z. B. zeigt es an, dass es verarbeitet wird)
Erstellen Sie ein weiteres Skript, das die Nachrichtenwarteschlange verbraucht, lange läuft, die Nachricht aus der Nachrichtenwarteschlange abruft, sie verarbeitet und schließlich den Status in „Verarbeitung abgeschlossen“ ändert (wenn Sie das Konzept einer Aufgabe haben)
Auf dieser Ebene hängt es von Ihrer spezifischen Situation ab, ob Sie Multiprozess oder Multithread benötigen. Multiprozess oder Multithread können nur E/A-intensive Vorgänge verbessern (gemessen an der Tatsache, dass Sie eine große Menge anfordern müssen). von Daten von anderen Orten) Wenn ja, ist es ziemlich konsistent)
Um Sie zufrieden zu stellen: Schauen Sie sich die Funktion pcntl_fork an
php_swoole ist ausgereifter und stabiler als pcntl. Darüber hinaus ist es besser, bei der Verarbeitung mit der Nachrichtenwarteschlange zusammenzuarbeiten