Die Anwendungsszenarien von PHP mit Swoole sind: 1. Echtzeiterfassung von Positionierungsdaten und Echtzeitausgabe. Es ist notwendig, alle Positionierungsgeräte in Echtzeit zu empfangen und Echtzeit-Trackaufzeichnungen anzuzeigen Karte; 2. Nur Ortungsgeräte sammeln Zum Speichern müssen die von allen Ortungsgeräten hochgeladenen Daten in der Datenbank gespeichert werden.
Die Anwendungsszenarien von PHP mit Swoole sind:
Szenario 1 – Echtzeiterfassung von Positionierungsdaten und Echtzeitausgabe (Beispiel der Fahrroute eines Didi-Fahrers)
Hinweis:
Es ist notwendig, alle Positionierungsgeräte in Echtzeit zu empfangen und die Echtzeit-Trajektorienaufzeichnungen anzuzeigen auf der Karte
Hinweis:
Der erste Punkt:
Benutzer 1, 2, 3 sind mit Web1-Server verbunden, Web1 kann nur Benutzer 1 übertragen , 2, 3 beim Senden von Informationen. Gehen Sie davon aus, dass Benutzer 1 eine Nachricht senden .
Zweiter Punkt: Nachrichtenfrequenzsteuerung, zum Beispiel: 100 Geräte, 100 Benutzer, 100 Geräte laden ein Datenelement pro Sekunde hoch, das in Echtzeit an jeden Benutzer gesendet werden muss, also 100* 100 = 1 W Mal pro Sekunde, sodass die Daten pro Sekunde zusammengefasst und an alle Benutzer und andere Methoden gesendet werden können
Szenario 2 – Nur Ortungsgeräte in die sammeln Datenbank
Anleitung: Alle Positionierungsgeräte müssen hochgeladen werden. Die Daten werden in der Datenbank gespeichert, mit 7 Geräten und einem Datenelement pro Sekunde. Ich persönlich verwende Swooles Aufgabenfunktion (liefere eine asynchrone Aufgabe an Der task_worker-Pool ist nicht blockierend und die Anzahl der Worker-Prozesse kann ebenfalls konfiguriert werden. Anschließend wird die Schnittstelle aufgerufen, um sie in der Datenbank zu speichern.
Problem mit dem Serverspeicheralarm
Ursache : Die swoole_server->task
Funktion
führt offiziell ein, dass die unterste Ebene der Aufgabe die Unix-Socket-Pipe-Kommunikation verwendet, die vollen Speicher und keinen E/A-Verbrauch aufweist. Die Lese- und Schreibleistung eines einzelnen Prozesses kann 1 Million/s erreichen. Verschiedene Prozesse nutzen unterschiedliche Pipelines für die Kommunikation, wodurch die Nutzung mehrerer Kerne maximiert werden kann.
Wenn die Aufgabe jedoch darin besteht, die Programmschnittstelle aufzurufen, steigt die Speichernutzung aufgrund der Netzwerkverzögerung weiter an, wenn die hinzugefügten Aufgaben größer sind als die verbrauchten Aufgaben, was dazu führt, dass der Speicher des Servers voll ist.
Lösung: Steuern Sie die Häufigkeit der Nachrichteneingabe in die Aufgabe. Sie können diese Zeit definieren und festlegen, ob sie entsprechend Ihrem eigenen Geschäftsszenario verzögert werden kann, alle Daten innerhalb von 1 Sekunde zusammenfassen und dann die Programmschnittstelle aufrufen (I Ich persönlich verwende Redis beim Zusammenfassen.) Speichern Sie es am besten direkt in der Bibliothek, ohne die Schnittstelle aufzurufen Zugang zur Kompetenz
Das obige ist der detaillierte Inhalt vonWelche Anwendungsszenarien gibt es für den Einsatz von Swoole in PHP?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!