Heim  >  Artikel  >  Backend-Entwicklung  >  Womit wird Multi-Processing auf dem PHP-Server implementiert?

Womit wird Multi-Processing auf dem PHP-Server implementiert?

WBOY
WBOYOriginal
2016-12-01 00:56:47886Durchsuche

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!

Antwortinhalt:

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

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn