Heim > Artikel > PHP-Framework > 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.
Zuerst müssen wir Workerman installieren. Der spezifische Befehl lautet wie folgt:
composer require workerman/workerman
<?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();
Erstellen Sie ein Computerknotenprogramm
<?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();
Erstellen Sie ein Client-Programm
<?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; } }
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!