Rumah >rangka kerja php >Workerman >Pembangunan Pekerja Lanjutan: merealisasikan komunikasi pelbagai proses teragih

Pembangunan Pekerja Lanjutan: merealisasikan komunikasi pelbagai proses teragih

王林
王林asal
2023-08-04 14:01:211253semak imbas

Pembangunan Pekerja Lanjutan: merealisasikan komunikasi berbilang proses teragih

Dengan pembangunan aplikasi Internet, keperluan pembangunan back-end Web menjadi semakin pelbagai dan kompleks. Model pembangunan jalur tunggal proses tunggal tradisional tidak lagi dapat memenuhi keperluan trafik yang besar dan keselarasan yang tinggi. Untuk meningkatkan prestasi dan kebolehskalaan sistem, komunikasi pelbagai proses yang diedarkan telah menjadi teknologi utama.

Dalam artikel ini, kami akan memperkenalkan cara menggunakan rangka kerja Workerman untuk melaksanakan komunikasi berbilang proses teragih. Workerman ialah rangka kerja pengaturcaraan rangkaian berbilang proses PHP yang ringkas dan mudah digunakan yang menyokong pelayan TCP/UDP berprestasi tinggi dan pengaturcaraan klien. Dengan memanfaatkan kuasa Workerman, kami boleh membina aplikasi teragih berprestasi tinggi dan berskala dengan mudah.

Pertama, mari kita memahami penggunaan asas rangka kerja Workerman. Berikut ialah kod contoh pelayan TCP ringkas berdasarkan Workerman:

<?php
require_once __DIR__ . '/vendor/autoload.php';

use WorkermanWorker;

$worker = new Worker('tcp://0.0.0.0:8888');
$worker->count = 4;

$worker->onWorkerStart = function($worker) {
    echo "Worker {$worker->id} started
";
};

$worker->onConnect = function($connection) {
    echo "New connection from {$connection->getRemoteIp()}:{$connection->getRemotePort()}
";
};

$worker->onMessage = function($connection, $data) {
    echo "Received message: {$data}
";
    $connection->send("Hello, {$data}!
");
};

Worker::runAll();

Dalam kod sampel di atas, kami mencipta objek Worker berdasarkan protokol TCP, yang mendengar port 8888 tempatan dan menyediakan 4 proses untuk mengendalikan sambungan. Setiap proses akan melaksanakan fungsi panggil balik onWorkerStart apabila ia bermula, yang digunakan untuk mengeluarkan nombor Pekerja. Apabila sambungan baharu diwujudkan, fungsi panggil balik onConnect dicetuskan dan maklumat berkaitan sambungan dikeluarkan pada konsol. Apabila mesej daripada klien diterima, fungsi panggil balik onMessage dicetuskan, mesej yang diterima dikeluarkan pada konsol, dan kemudian Hello dan kandungan mesej dihantar semula kepada klien.

Contoh di atas hanyalah penggunaan asas Workerman Seterusnya, kami akan memperkenalkan cara menggunakan Workerman untuk mencapai komunikasi berbilang proses teragih. Katakan kami mempunyai aplikasi yang perlu mengendalikan sejumlah besar muat naik imej Untuk meningkatkan prestasi, kami ingin mengagihkan tugas muat naik imej kepada berbilang proses untuk diproses. Berikut ialah contoh kod yang melaksanakan komunikasi berbilang proses teragih:

<?php
require_once __DIR__ . '/vendor/autoload.php';

use WorkermanWorker;
use WorkermanLibTimer;

$taskWorkerCount = 4;
$uploadWorkerCount = 2;

$taskWorker = new Worker();
$taskWorker->count = $taskWorkerCount;

$uploadWorker = new Worker();
$uploadWorker->count = $uploadWorkerCount;

$taskWorker->onWorkerStart = function($worker) {
    $uploadWorker = new Worker();
    $uploadWorker->count = $GLOBALS['uploadWorkerCount'];
    $uploadWorker->onMessage = function($connection, $data) {
        echo "TaskWorker {$worker->id} received upload message: {$data}
";
        $connection->send("TaskWorker {$worker->id} received upload message: {$data}
");
    };

    $uploadWorker->listen('tcp://127.0.0.1:5678');
    echo "TaskWorker {$worker->id} started
";
};

$uploadWorker->onWorkerStart = function($worker) {
    Timer::add(1, function() use($worker) {
        $taskWorkerId = rand(0, $GLOBALS['taskWorkerCount'] - 1);
        $taskWorker = $worker->getWorkerById($taskWorkerId);
        $taskWorker->send("Upload message");
    });
    echo "UploadWorker {$worker->id} started
";
};

Worker::runAll();

Dalam kod sampel di atas, kami mencipta TaskWorker dan UploadWorker. TaskWorker bertanggungjawab untuk menerima mesej daripada UploadWorker dan mengeluarkan mesej yang diterima pada konsol. UploadWorker bertanggungjawab menghantar mesej kepada TaskWorker setiap 1 saat. Untuk kemudahan, setiap TaskWorker juga mencipta UploadWorker apabila ia bermula dan mendengar port tempatan 5678 untuk menerima mesej daripada UploadWorker.

Melalui contoh kod di atas, kita dapat melihat cara menggunakan Workerman untuk melaksanakan komunikasi berbilang proses teragih yang mudah. Dengan memperuntukkan tugas dengan betul dan memanfaatkan pelbagai proses, kami boleh mencapai aplikasi berprestasi tinggi dan berskala.

Ringkasnya, rangka kerja Workerman ialah alat yang sangat sesuai untuk komunikasi berbilang proses teragih. Dengan menggunakan fungsi Workerman secara fleksibel, kami boleh membina aplikasi teragih berprestasi tinggi dan berskala dengan mudah. Saya harap artikel ini akan membantu kerja dan kajian semua orang.

Atas ialah kandungan terperinci Pembangunan Pekerja Lanjutan: merealisasikan komunikasi pelbagai proses teragih. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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