Rumah > Artikel > rangka kerja php > Cara menggunakan Workerman untuk melaksanakan sistem pengkomputeran teragih
Sistem pengkomputeran teragih merujuk kepada model pengkomputeran yang menganggap sekumpulan komputer sebagai satu sistem untuk menyelesaikan tugas pengkomputeran secara kolaboratif. Dalam praktiknya, sistem pengkomputeran teragih boleh meningkatkan kelajuan pengkomputeran dengan menambah bilangan komputer, dan pada masa yang sama dapat menyelesaikan masalah memproses sejumlah besar data. Workerman ialah rangka kerja yang boleh melaksanakan sistem pengkomputeran teragih menggunakan bahasa PHP Artikel ini akan memperkenalkan cara menggunakan Workerman untuk melaksanakan sistem pengkomputeran teragih yang mudah dan menyediakan contoh kod.
Pertama sekali, kita perlu memasang Workerman. Ia boleh dipasang melalui Komposer. menjalankan program pelayan, klien boleh menyerahkan tugas pengkomputeran kepada pelayan Pelayan bertanggungjawab untuk memberikan tugasan kepada nod pengkomputeran untuk pengiraan dan mengembalikan keputusan akhir kepada klien. Berikut ialah contoh kod pelayan.php:
composer require workerman/workerman
Dalam kelas Tugas, kami menyimpan ID tugas (id_tugas), nombor nod yang akan dikira (nombor_pekerja) dan data yang akan dikira (data_tugas). Kaedah send() digunakan untuk menghantar tugasan ke nod pengkomputeran yang ditentukan. Di sini, kami menggunakan fungsi stream_socket_client() untuk melaksanakan klien soket TCP untuk berkomunikasi dengan nod pengkomputeran yang ditentukan.
Buat program nod pengkomputeranSeterusnya, mari buat program nod pengkomputeran bernama worker.php. Program ini akan melakukan pengiraan selepas pelayan memberikan tugas pengiraan kepadanya, dan mengembalikan hasilnya kepada pelayan. Berikut ialah contoh kod pekerja.php:
<?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();
Akhir sekali, kita perlu mencipta program klien bernama client.php untuk menghantar tugas pengiraan ke pelayan dan mendapatkan pengiraan keputusan. Berikut ialah contoh kod klien.php:
<?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();
Di atas ialah langkah terperinci tentang cara menggunakan Workerman untuk melaksanakan sistem pengkomputeran teragih, termasuk mencipta program pelayan, program nod pengkomputeran dan program klien, dan menyediakan khusus Contoh kod. Perlu dinyatakan bahawa contoh yang diberikan dalam artikel ini hanya menunjukkan idea asas tentang cara menggunakan Workerman untuk melaksanakan sistem pengkomputeran teragih Masih terdapat beberapa masalah dalam aplikasi praktikal, seperti pengimbangan beban, strategi pengagihan tugas, dsb. Tetapi semua masalah ini boleh diselesaikan dengan mengkaji dengan teliti rangka kerja Workerman dan melaraskan kod.
Atas ialah kandungan terperinci Cara menggunakan Workerman untuk melaksanakan sistem pengkomputeran teragih. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!