Rumah rangka kerja php Workerman Cara menggunakan Workerman untuk melaksanakan sistem pengkomputeran teragih

Cara menggunakan Workerman untuk melaksanakan sistem pengkomputeran teragih

Nov 08, 2023 pm 02:19 PM
workerman mengira diedarkan

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.

  1. Pasang Pekerja

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
Salin selepas log masuk
    Dalam kod di atas, kami menggunakan port mendengar pelayan untuk menunggu klien menyerahkan tugas. Apabila pelayan menerima tugas yang diserahkan oleh klien, pelayan akan memberikan tugasan kepada nod pengkomputeran untuk pengiraan dan mengembalikan hasilnya kepada klien.
  1. Dalam contoh kelas Pekerja, kami mengkonfigurasi 4 proses untuk mengendalikan permintaan pelanggan. Dalam panggilan balik acara onMessage, kami mula-mula mendapatkan worker_num dan task_data daripada data JSON yang diserahkan oleh klien, kemudian buat contoh Tugasan baharu, hantar tugasan ke nod pengkomputeran dan tunggu hasil pengiraan dikembalikan.

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 pengkomputeran

Seterusnya, 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();
Salin selepas log masuk
    Dalam kod di atas, kami menggunakan soket TCP untuk mendengar port dan menunggu pelayan menetapkan tugasan pengkomputeran. Apabila terdapat tugas pengkomputeran yang perlu diproses, kami memperoleh data yang perlu diproses daripada data tugas, melakukan pengiraan, dan menghantar hasilnya ke pelayan.
Buat program klien

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();
Salin selepas log masuk
    Dalam kod di atas, kami mula-mula mencipta klien soket TCP untuk menyambung ke nod pengiraan. Fungsi fread() digunakan di sini untuk mendapatkan hasil pengembalian tugas pengiraan daripada pelayan. Kemudian kami menghantar task_id sebagai parameter kepada semua nod pengkomputeran dan menunggu keputusan dikembalikan. Berdasarkan ID tugas (task_id), kami boleh mengenal pasti nod pengkomputeran yang mengembalikan hasil pengiraan. Akhirnya kita boleh mengeluarkan hasil pengiraan.
  1. Ringkasan

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!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Akan R.E.P.O. Ada Crossplay?
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Pendaraban matriks universal CUDA: dari kemasukan kepada kemahiran! Pendaraban matriks universal CUDA: dari kemasukan kepada kemahiran! Mar 25, 2024 pm 12:30 PM

Pendaraban Matriks Umum (GEMM) ialah bahagian penting dalam banyak aplikasi dan algoritma, dan juga merupakan salah satu petunjuk penting untuk menilai prestasi perkakasan komputer. Penyelidikan mendalam dan pengoptimuman pelaksanaan GEMM boleh membantu kami lebih memahami pengkomputeran berprestasi tinggi dan hubungan antara perisian dan sistem perkakasan. Dalam sains komputer, pengoptimuman GEMM yang berkesan boleh meningkatkan kelajuan pengkomputeran dan menjimatkan sumber, yang penting untuk meningkatkan prestasi keseluruhan sistem komputer. Pemahaman yang mendalam tentang prinsip kerja dan kaedah pengoptimuman GEMM akan membantu kami menggunakan potensi perkakasan pengkomputeran moden dengan lebih baik dan menyediakan penyelesaian yang lebih cekap untuk pelbagai tugas pengkomputeran yang kompleks. Dengan mengoptimumkan prestasi GEMM

Cara mengira penambahan, penolakan, pendaraban dan pembahagian dalam dokumen perkataan Cara mengira penambahan, penolakan, pendaraban dan pembahagian dalam dokumen perkataan Mar 19, 2024 pm 08:13 PM

WORD adalah pemproses perkataan yang berkuasa Kita boleh menggunakan perkataan untuk mengedit pelbagai teks Dalam jadual Excel, kita telah menguasai kaedah pengiraan penambahan, penolakan dan penggandaan Jadi jika kita perlu mengira penambahan nilai dalam jadual Word. Bagaimana untuk menolak pengganda? Bolehkah saya hanya menggunakan kalkulator untuk mengiranya? Jawapannya sudah tentu tidak, WORD juga boleh melakukannya. Hari ini saya akan mengajar anda cara menggunakan formula untuk mengira operasi asas seperti penambahan, penolakan, pendaraban dan pembahagian dalam jadual dalam dokumen Word. Jadi, hari ini izinkan saya menunjukkan secara terperinci cara mengira penambahan, penolakan, pendaraban dan pembahagian dalam dokumen WORD? Langkah 1: Buka WORD, klik [Jadual] di bawah [Sisipkan] pada bar alat dan masukkan jadual dalam menu lungsur.

Cara mengira bilangan elemen dalam senarai menggunakan fungsi count() Python Cara mengira bilangan elemen dalam senarai menggunakan fungsi count() Python Nov 18, 2023 pm 02:53 PM

Cara menggunakan fungsi count() Python untuk mengira bilangan elemen dalam senarai memerlukan contoh kod khusus Sebagai bahasa pengaturcaraan yang berkuasa dan mudah dipelajari, Python menyediakan banyak fungsi terbina dalam untuk mengendalikan struktur data yang berbeza. Salah satunya ialah fungsi count(), yang boleh digunakan untuk mengira bilangan elemen dalam senarai. Dalam artikel ini, kami akan menerangkan cara menggunakan fungsi count() secara terperinci dan memberikan contoh kod khusus. Fungsi count() ialah fungsi terbina dalam Python, digunakan untuk mengira sesuatu

Laksanakan muat naik dan muat turun fail dalam dokumen Workerman Laksanakan muat naik dan muat turun fail dalam dokumen Workerman Nov 08, 2023 pm 06:02 PM

Untuk melaksanakan muat naik dan muat turun fail dalam dokumen Workerman, contoh kod khusus diperlukan. Pengenalan: Workerman ialah rangka kerja komunikasi rangkaian tak segerak PHP berprestasi tinggi yang ringkas, cekap dan mudah digunakan. Dalam pembangunan sebenar, muat naik dan muat turun fail adalah keperluan fungsi biasa Artikel ini akan memperkenalkan cara menggunakan rangka kerja Workerman untuk melaksanakan muat naik dan muat turun fail, dan memberikan contoh kod khusus. 1. Muat naik fail: Muat naik fail merujuk kepada operasi memindahkan fail pada komputer tempatan ke pelayan. Yang berikut digunakan

Cara menggunakan fungsi Math.Pow dalam C# untuk mengira kuasa nombor tertentu Cara menggunakan fungsi Math.Pow dalam C# untuk mengira kuasa nombor tertentu Nov 18, 2023 am 11:32 AM

Dalam C#, terdapat perpustakaan kelas Matematik, yang mengandungi banyak fungsi matematik. Ini termasuk fungsi Math.Pow, yang mengira kuasa, yang boleh membantu kita mengira kuasa nombor tertentu. Penggunaan fungsi Math.Pow adalah sangat mudah, anda hanya perlu menentukan asas dan eksponen. Sintaksnya adalah seperti berikut: Math.Pow(base,exponent); dengan asas mewakili asas dan eksponen mewakili eksponen. Fungsi ini mengembalikan hasil jenis berganda, iaitu hasil pengiraan kuasa. Jom

Bagaimana untuk melaksanakan penggunaan asas dokumen Workerman Bagaimana untuk melaksanakan penggunaan asas dokumen Workerman Nov 08, 2023 am 11:46 AM

Pengenalan kepada cara melaksanakan penggunaan asas dokumen Workerman: Workerman ialah rangka kerja pembangunan PHP berprestasi tinggi yang boleh membantu pembangun membina aplikasi rangkaian konkurensi tinggi dengan mudah. Artikel ini akan memperkenalkan penggunaan asas Workerman, termasuk pemasangan dan konfigurasi, mencipta perkhidmatan dan port mendengar, mengendalikan permintaan pelanggan, dsb. Dan berikan contoh kod yang sepadan. 1. Pasang dan konfigurasikan Workerman Masukkan arahan berikut pada baris arahan untuk memasang Workerman: c

Mana satu lebih baik, swool atau pekerja? Mana satu lebih baik, swool atau pekerja? Apr 09, 2024 pm 07:00 PM

Swoole dan Workerman kedua-duanya adalah rangka kerja pelayan PHP berprestasi tinggi. Terkenal dengan pemprosesan tak segerak, prestasi cemerlang dan kebolehskalaannya, Swoole sesuai untuk projek yang perlu mengendalikan sejumlah besar permintaan serentak dan daya pemprosesan yang tinggi. Workerman menawarkan fleksibiliti mod tak segerak dan segerak, dengan API intuitif yang lebih sesuai untuk kemudahan penggunaan dan projek yang mengendalikan volum serentak yang lebih rendah.

Cara menggunakan Redis untuk mencapai penyegerakan data teragih Cara menggunakan Redis untuk mencapai penyegerakan data teragih Nov 07, 2023 pm 03:55 PM

Cara menggunakan Redis untuk mencapai penyegerakan data teragih Dengan perkembangan teknologi Internet dan senario aplikasi yang semakin kompleks, konsep sistem teragih semakin diterima pakai secara meluas. Dalam sistem teragih, penyegerakan data merupakan isu penting. Sebagai pangkalan data dalam memori berprestasi tinggi, Redis bukan sahaja boleh digunakan untuk menyimpan data, tetapi juga boleh digunakan untuk mencapai penyegerakan data teragih. Untuk penyegerakan data teragih, biasanya terdapat dua mod biasa: mod terbitkan/langgan (Terbitkan/Langgan) dan replikasi induk-hamba (Master-slave).

See all articles