Heim PHP-Framework Workerman So implementieren Sie Workerman zum Implementieren eines verteilten Computersystems

So implementieren Sie Workerman zum Implementieren eines verteilten Computersystems

Nov 08, 2023 pm 02:19 PM
workerman 计算 分布式

So implementieren Sie Workerman zum Implementieren eines verteilten Computersystems

Ein verteiltes Computersystem bezieht sich auf ein Computermodell, das eine Gruppe von Computern als ein einziges System behandelt, um Computeraufgaben gemeinsam zu erledigen. In der Praxis können verteilte Computersysteme die Rechengeschwindigkeit erhöhen, indem sie die Anzahl der Computer erhöhen, und gleichzeitig das Problem der Verarbeitung großer Datenmengen lösen. Workerman ist ein Framework, das verteilte Computersysteme mithilfe der PHP-Sprache implementieren kann. In diesem Artikel wird erläutert, wie Workerman zum Implementieren eines einfachen verteilten Computersystems verwendet wird, und es werden Codebeispiele bereitgestellt.

  1. Workerman installieren

Zuerst müssen wir Workerman installieren. Der spezifische Befehl lautet wie folgt:

composer require workerman/workerman
Nach dem Login kopieren
  1. Erstellen Sie ein Serverprogramm mit dem Namen server.php. Durch Ausführen dieses Programms kann der Client Computeraufgaben an den Server senden ist dafür verantwortlich, den Rechenknoten Aufgaben zur Berechnung zuzuweisen und die Endergebnisse an den Client zurückzugeben. Das Folgende ist ein Codebeispiel von server.php:
  2. <?php
    use WorkermanWorker;
    
    require_once __DIR__ . '/vendor/autoload.php';
    
    $worker = new Worker('text://0.0.0.0:2346');
    
    $worker->count = 4;
    
    $worker->onMessage = function($connection, $data){
        $params = json_decode($data, true);
    
        $worker_num = $params['worker_num'];
        $task_data = $params['task_data'];
    
        $task_id = md5($task_data);
    
        $task_worker = new Task($task_id);
        $task_worker->send([
            'worker_num' => $worker_num,
            'task_data' => $task_data
        ]);
      
        $connection->send(json_encode([
            'task_id' => $task_id
        ]));
    };
    
    class Task{
        protected $task_id;
      
        protected $worker_num;
    
        protected $task_data;
    
        public function __construct($task_id){
            $this->task_id = $task_id;
        }
    
        public function send($data){
            $task_data = json_encode([
                'task_id' => $this->task_id,
                'data' => $data
            ]);
    
            $worker_num = $data['worker_num'];
            $socket_name = "tcp://127.0.0.1:".(2347 + $worker_num);
    
            $client = stream_socket_client($socket_name, $errno, $errstr);
      
            fwrite($client, $task_data);
            fclose($client);
        }
    }
    
    Worker::runAll();
    Nach dem Login kopieren
Im obigen Code verwenden wir den Server-Listening-Port, um darauf zu warten, dass der Client eine Aufgabe übermittelt. Wenn der Server die vom Client übermittelte Aufgabe empfängt, weist der Server die Aufgabe einem Rechenknoten zur Berechnung zu und gibt die Ergebnisse an den Client zurück.

In der Instanz der Worker-Klasse konfigurieren wir 4 Prozesse zur Bearbeitung von Clientanfragen. Im onMessage-Ereignisrückruf erhalten wir zunächst worker_num und task_data aus den vom Client übermittelten JSON-Daten, erstellen dann eine neue Task-Instanz, senden die Task an den Rechenknoten und warten auf die Rückgabe des Berechnungsergebnisses.

In der Task-Klasse speichern wir die Task-ID (task_id), die zu berechnende Knotennummer (worker_num) und die zu berechnenden Daten (task_data). Mit der Methode send() werden Aufgaben an den angegebenen Rechenknoten gesendet. Hier verwenden wir die Funktion stream_socket_client(), um einen TCP-Socket-Client für die Kommunikation mit dem angegebenen Rechenknoten zu implementieren.

Erstellen Sie ein Computerknotenprogramm

  1. Als nächstes erstellen wir ein Computerknotenprogramm mit dem Namen worker.php. Das Programm führt Berechnungen durch, nachdem der Server ihm die Berechnungsaufgaben zugewiesen hat, und sendet die Ergebnisse an den Server zurück. Das Folgende ist ein Codebeispiel für worker.php:
  2. <?php
    use WorkermanWorker;
    
    require_once __DIR__ . '/vendor/autoload.php';
    
    $worker_num = intval($argv[1]);
    
    $worker = new Worker("tcp://0.0.0.0:". (2347 + $worker_num));
    
    $worker->onMessage = function($connection, $data){
        $params = json_decode($data, true);
        $task_id = $params['task_id'];
    
        $task_data = $params['data'];
    
        $result = strlen($task_data);
    
        $connection->send(json_encode([
            'task_id' => $task_id,
            'result' => $result
        ]));
    };
    
    Worker::runAll();
    Nach dem Login kopieren
Im obigen Code verwenden wir einen TCP-Socket, um einen Port abzuhören und darauf zu warten, dass der Server Rechenaufgaben zuweist. Wenn eine Rechenaufgabe verarbeitet werden muss, erhalten wir die zu verarbeitenden Daten aus den Aufgabendaten, führen Berechnungen durch und senden die Ergebnisse an den Server.

Erstellen Sie ein Client-Programm

  1. Abschließend müssen wir ein Client-Programm namens client.php erstellen, um Berechnungsaufgaben an den Server zu senden und Berechnungsergebnisse zu erhalten. Hier ist das Codebeispiel für client.php:
  2. <?php
    use WorkermanWorker;
    
    require_once __DIR__ . '/vendor/autoload.php';
    
    $client = stream_socket_client("tcp://127.0.0.1:2346", $errno, $errstr);
    
    $data = [
        'worker_num' => 1,
        'task_data' => 'Workerman is a high-performance PHP socket framework'
    ];
    
    $json_data = json_encode($data);
    
    fwrite($client, $json_data);
    $result = fread($client, 8192);
    
    fclose($client);
    
    $result_data = json_decode($result, true);
    
    $task_id = $result_data['task_id'];
    
    foreach(range(0,3) as $worker_num){
        $worker_client = stream_socket_client("tcp://127.0.0.1:". (2347 + $worker_num), $errno, $errstr);
    
        fwrite($worker_client, json_encode([
            'task_id' => $task_id,
            'worker_num' => $worker_num
        ]));
    
        $worker_result = fread($worker_client, 8192);
    
        $worker_result_data = json_decode($worker_result, true);
    
        if($worker_result_data['task_id'] == $task_id){
            echo "Result: " . $worker_result_data['result'] . PHP_EOL;
            break;
        }
    }
    
    Nach dem Login kopieren
    Im obigen Code erstellen wir zunächst einen TCP-Socket-Client, um eine Verbindung zum Rechenknoten herzustellen. Hier wird die Funktion fread() verwendet, um die Rückgabeergebnisse der Berechnungsaufgabe vom Server zu erhalten. Anschließend senden wir task_id als Parameter an alle Rechenknoten und warten auf die Rückgabe der Ergebnisse. Anhand der Task-ID (task_id) können wir erkennen, welcher Rechenknoten das Berechnungsergebnis zurückgegeben hat. Abschließend können wir die Berechnungsergebnisse ausgeben.

    Zusammenfassung

    Das Obige sind die detaillierten Schritte zur Verwendung von Workerman zur Implementierung eines verteilten Computersystems, einschließlich der Erstellung von Serverprogrammen, Computerknotenprogrammen und Clientprogrammen sowie der Bereitstellung spezifischer Codebeispiele. Es ist erwähnenswert, dass die in diesem Artikel bereitgestellten Beispiele nur die Grundideen für die Verwendung von Workerman zur Implementierung verteilter Computersysteme veranschaulichen. In praktischen Anwendungen wie Lastausgleich, Aufgabenzuweisungsstrategien usw. gibt es immer noch einige Probleme. Aber all diese Probleme können gelöst werden, indem man das Workerman-Framework sorgfältig studiert und den Code anpasst.

    Das obige ist der detaillierte Inhalt vonSo implementieren Sie Workerman zum Implementieren eines verteilten Computersystems. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

CUDAs universelle Matrixmultiplikation: vom Einstieg bis zur Kompetenz! CUDAs universelle Matrixmultiplikation: vom Einstieg bis zur Kompetenz! Mar 25, 2024 pm 12:30 PM

Die allgemeine Matrixmultiplikation (GEMM) ist ein wesentlicher Bestandteil vieler Anwendungen und Algorithmen und außerdem einer der wichtigen Indikatoren zur Bewertung der Leistung der Computerhardware. Eingehende Forschung und Optimierung der Implementierung von GEMM können uns helfen, Hochleistungsrechnen und die Beziehung zwischen Software- und Hardwaresystemen besser zu verstehen. In der Informatik kann eine effektive Optimierung von GEMM die Rechengeschwindigkeit erhöhen und Ressourcen einsparen, was für die Verbesserung der Gesamtleistung eines Computersystems von entscheidender Bedeutung ist. Ein tiefgreifendes Verständnis des Funktionsprinzips und der Optimierungsmethode von GEMM wird uns helfen, das Potenzial moderner Computerhardware besser zu nutzen und effizientere Lösungen für verschiedene komplexe Computeraufgaben bereitzustellen. Durch Optimierung der Leistung von GEMM

So berechnen Sie Addition, Subtraktion, Multiplikation und Division in einem Word-Dokument So berechnen Sie Addition, Subtraktion, Multiplikation und Division in einem Word-Dokument Mar 19, 2024 pm 08:13 PM

WORD ist ein leistungsstarkes Textverarbeitungsprogramm, mit dem wir verschiedene Texte in Excel bearbeiten können. Wir beherrschen die Berechnungsmethoden der Addition, Subtraktion und Multiplikatoren. Wie subtrahiere ich den Multiplikator? Kann ich ihn nur mit einem Taschenrechner berechnen? Die Antwort ist natürlich nein, WORD kann das auch. Heute werde ich Ihnen beibringen, wie Sie mit Formeln grundlegende Operationen wie Addition, Subtraktion, Multiplikation und Division in Tabellen in Word-Dokumenten berechnen. Lassen Sie mich heute im Detail zeigen, wie man Addition, Subtraktion, Multiplikation und Division in einem WORD-Dokument berechnet. Schritt 1: Öffnen Sie ein WORD, klicken Sie in der Symbolleiste unter [Einfügen] auf [Tabelle] und fügen Sie eine Tabelle in das Dropdown-Menü ein.

So zählen Sie die Anzahl der Elemente in einer Liste mit der Funktion count() von Python So zählen Sie die Anzahl der Elemente in einer Liste mit der Funktion count() von Python Nov 18, 2023 pm 02:53 PM

Um die Anzahl der Elemente in einer Liste mit der Funktion count() von Python zu zählen, sind bestimmte Codebeispiele erforderlich. Als leistungsstarke und leicht zu erlernende Programmiersprache bietet Python viele integrierte Funktionen zur Verarbeitung unterschiedlicher Datenstrukturen. Eine davon ist die Funktion count(), mit der sich die Anzahl der Elemente in einer Liste zählen lässt. In diesem Artikel erklären wir die Verwendung der count()-Funktion im Detail und stellen spezifische Codebeispiele bereit. Die Funktion count() ist eine in Python integrierte Funktion, mit der ein bestimmter Wert berechnet wird

Implementieren Sie das Hoch- und Herunterladen von Dateien in Workerman-Dokumenten Implementieren Sie das Hoch- und Herunterladen von Dateien in Workerman-Dokumenten Nov 08, 2023 pm 06:02 PM

Um das Hochladen und Herunterladen von Dateien in Workerman-Dokumenten zu implementieren, sind spezifische Codebeispiele erforderlich. Einführung: Workerman ist ein leistungsstarkes PHP-Framework für die asynchrone Netzwerkkommunikation, das einfach, effizient und benutzerfreundlich ist. In der tatsächlichen Entwicklung sind das Hochladen und Herunterladen von Dateien häufige Funktionsanforderungen. In diesem Artikel wird erläutert, wie das Workerman-Framework zum Implementieren des Hochladens und Herunterladens von Dateien verwendet wird, und es werden spezifische Codebeispiele aufgeführt. 1. Datei-Upload: Unter Datei-Upload versteht man die Übertragung von Dateien vom lokalen Computer auf den Server. Folgendes wird verwendet

So verwenden Sie die Math.Pow-Funktion in C#, um die Potenz einer bestimmten Zahl zu berechnen So verwenden Sie die Math.Pow-Funktion in C#, um die Potenz einer bestimmten Zahl zu berechnen Nov 18, 2023 am 11:32 AM

In C# gibt es eine Math-Klassenbibliothek, die viele mathematische Funktionen enthält. Dazu gehört die Funktion Math.Pow, die Potenzen berechnet und uns dabei helfen kann, die Potenz einer bestimmten Zahl zu berechnen. Die Verwendung der Math.Pow-Funktion ist sehr einfach, Sie müssen lediglich die Basis und den Exponenten angeben. Die Syntax lautet wie folgt: Math.Pow(base,exponent); wobei base die Basis und exponent den Exponenten darstellt. Diese Funktion gibt ein Ergebnis vom Typ Double zurück, nämlich das Ergebnis der Leistungsberechnung. Lasst uns

Was ist besser, Swoole oder Workerman? Was ist besser, Swoole oder Workerman? Apr 09, 2024 pm 07:00 PM

Swoole und Workerman sind beide leistungsstarke PHP-Server-Frameworks. Swoole ist für seine asynchrone Verarbeitung, hervorragende Leistung und Skalierbarkeit bekannt und eignet sich für Projekte, die eine große Anzahl gleichzeitiger Anfragen und einen hohen Durchsatz verarbeiten müssen. Workerman bietet die Flexibilität sowohl des asynchronen als auch des synchronen Modus mit einer intuitiven API, die sich besser für Benutzerfreundlichkeit und Projekte eignet, die ein geringeres Parallelitätsvolumen bewältigen.

Workerman-Entwicklung: So implementieren Sie Echtzeit-Videoanrufe basierend auf dem UDP-Protokoll Workerman-Entwicklung: So implementieren Sie Echtzeit-Videoanrufe basierend auf dem UDP-Protokoll Nov 08, 2023 am 08:03 AM

Workerman-Entwicklung: Echtzeit-Videoanrufe basierend auf dem UDP-Protokoll Zusammenfassung: In diesem Artikel wird erläutert, wie Sie mit dem Workerman-Framework eine Echtzeit-Videoanruffunktion basierend auf dem UDP-Protokoll implementieren. Wir werden ein tiefgreifendes Verständnis der Eigenschaften des UDP-Protokolls erlangen und anhand von Codebeispielen zeigen, wie man eine einfache, aber vollständige Echtzeit-Videoanrufanwendung erstellt. Einführung: In der Netzwerkkommunikation sind Echtzeit-Videoanrufe eine sehr wichtige Funktion. Beim herkömmlichen TCP-Protokoll kann es bei der Implementierung von Videoanrufen mit hoher Echtzeitgeschwindigkeit zu Problemen wie Übertragungsverzögerungen kommen. Und UDP

So implementieren Sie die grundlegende Verwendung von Workerman-Dokumenten So implementieren Sie die grundlegende Verwendung von Workerman-Dokumenten Nov 08, 2023 am 11:46 AM

Einführung in die Implementierung der grundlegenden Verwendung von Workerman-Dokumenten: Workerman ist ein leistungsstarkes PHP-Entwicklungsframework, mit dem Entwickler problemlos Netzwerkanwendungen mit hoher Parallelität erstellen können. In diesem Artikel wird die grundlegende Verwendung von Workerman vorgestellt, einschließlich Installation und Konfiguration, Erstellung von Diensten und Überwachungsports, Bearbeitung von Clientanfragen usw. Und geben Sie entsprechende Codebeispiele an. 1. Installieren und konfigurieren Sie Workerman. Geben Sie in der Befehlszeile den folgenden Befehl ein, um Workerman zu installieren: c

See all articles