Rumah rangka kerja php Workerman Amalan pengaturcaraan rangkaian pekerja: contoh membina sistem penyegerakan data masa nyata

Amalan pengaturcaraan rangkaian pekerja: contoh membina sistem penyegerakan data masa nyata

Aug 06, 2023 am 09:21 AM
workerman pengaturcaraan rangkaian Penyegerakan data masa nyata

Amalan Pengaturcaraan Rangkaian Pekerja: Contoh membina sistem penyegerakan data masa nyata

Pengenalan:
Dengan pembangunan berterusan dan aplikasi teknologi Internet, penyegerakan data masa nyata telah menjadi salah satu keperluan teras banyak sistem dan aplikasi semasa . Pengaturcaraan rangkaian ialah teknologi utama apabila melaksanakan sistem penyegerakan data masa nyata. Artikel ini akan memperkenalkan cara menggunakan rangka kerja pengaturcaraan rangkaian Workerman untuk membina sistem penyegerakan data masa nyata yang mudah dan praktikal, dan menerangkannya secara terperinci dengan contoh kod.

1. Apakah itu Pekerja?
Workerman ialah rangka kerja pengaturcaraan rangkaian PHP berprestasi tinggi Ia berdasarkan model tak segerak tidak menyekat dipacu peristiwa dan boleh mencapai komunikasi rangkaian konkurensi tinggi. Workerman boleh mengendalikan beribu-ribu sambungan serentak dan sesuai untuk membina aplikasi rangkaian berprestasi tinggi seperti sistem penyegerakan data masa nyata.

2. Pelan reka bentuk sistem penyegerakan data masa nyata
Kami akan menggunakan Workerman untuk membina sistem penyegerakan data masa nyata yang mudah Sistem ini merangkumi dua peranan, iaitu pelayan dan klien. Pelayan menerima mesej yang dihantar oleh pelanggan dan menolaknya kepada semua pelanggan yang disambungkan untuk mencapai penyegerakan data masa nyata.

1. Reka bentuk pelayan:
Pelayan perlu mencipta instance Workerman dan mendengar port yang ditentukan, menunggu sambungan pelanggan. Setelah pelanggan berjaya menyambung, pelayan akan mengekalkan kumpulan sambungan pelanggan dan menghantar mesej yang diterima kepada semua pelanggan yang disambungkan.

2. Reka bentuk pelanggan:
Pelanggan perlu menyambung ke pelayan dan menghantar mesejnya sendiri. Apabila pelayan menerima mesej, ia akan ditolak kepada semua pelanggan.

3. Contoh Kod
Berikut ialah contoh kod untuk pelayan dan pelanggan, menunjukkan cara menggunakan Workerman untuk membina sistem penyegerakan data masa nyata.

Contoh kod pelayan:

require_once './Workerman/Autoloader.php';

use WorkermanWorker;

// Buat Worker untuk mendengar protokol penghantaran yang ditentukan
$work = new Worker('tcp://127.0.0.1:2345');

// Mulakan 4 proses untuk menyediakan perkhidmatan luaran
$worker->count = 4;

// Fungsi panggil balik apabila pelanggan menyambung
$ pekerja ->onConnect = function ($connection) {

echo "New client connected: " . $connection->id . "
Salin selepas log masuk

";

global $worker;

// 向所有客户端推送新连接信息
foreach ($worker->connections as $conn) {
    $conn->send("New client connected: " . $connection->id);
}

// 将新连接加入连接池
$worker->connections[$connection->id] = $connection;
Salin selepas log masuk

};

// Fungsi panggil balik apabila pelanggan memutuskan sambungan
$worker->onClose = function ($connection) {

echo "Client disconnected: " . $connection->id . "
Salin selepas log masuk

;

global $worker;

// 向所有客户端推送断开连接信息
foreach ($worker->connections as $conn) {
    $conn->send("Client disconnected: " . $connection->id);
}

// 从连接池中移除断开的连接
unset($worker->connections[$connection->id]);
Salin selepas log masuk

};

//Fungsi panggil balik apabila pelanggan menerima mesej
$worker->onMessage = function ($connection, $data) {

echo "Receive message from client: " . $data . "
Salin selepas log masuk

";

global $worker;

// 向所有客户端推送接收到的消息
foreach ($worker->connections as $conn) {
    $conn->send("Message from client " . $connection->id . ": " . $data);
}
Salin selepas log masuk

};

// Jalankan Worker
Worker::runAll();

Contoh kod pelanggan:

require_once './Workerman/Autoloader.php';

use WorkermanWorker;

// Buat sambungan Pekerja yang ditentukan alamat dan port
$worker = new Worker('tcp://127.0.0.1:2345');

// Fungsi panggil balik apabila berjaya menyambung ke pelayan
$worker->onConnect = function ($connection) {

echo "Connect to server success
Salin selepas log masuk

";

$connection->send("Hello, server");
$connection->onMessage = function ($connection, $data) {
    echo "Receive message from server: " . $data . "
Salin selepas log masuk

";

};
$connection->onClose = function () {
    echo "Server connection closed
Salin selepas log masuk

";

};
Salin selepas log masuk

};

// Run Worker
Worker::runAll();

IV. Keputusan eksperimen dan perbincangan di atas
Dengan contoh kod Th kita boleh menjalankan skrip bahagian pelayan dan bahagian klien dan memerhati interaksi antara mereka. Apabila pelanggan berjaya menyambung, pelayan dan pelanggan lain akan menerima pemberitahuan tentang sambungan baharu apabila pelanggan memutuskan sambungan, pelayan dan pelanggan lain juga akan menerima pemberitahuan yang sepadan. Mesej yang dihantar oleh pelanggan akan dimajukan oleh pelayan kepada semua pelanggan, merealisasikan penyegerakan data masa nyata yang mudah.

Ringkasan:
Artikel ini memperkenalkan contoh penggunaan rangka kerja pengaturcaraan rangkaian Workerman untuk membina sistem penyegerakan data masa nyata. Melalui sejumlah besar contoh kod, reka bentuk dan pelaksanaan pelayan dan klien diterangkan secara terperinci, dan eksperimen serta perbincangan yang berkaitan dijalankan. Saya harap artikel ini akan membantu pembangun yang sedang belajar dan mempraktikkan pengaturcaraan rangkaian.

Atas ialah kandungan terperinci Amalan pengaturcaraan rangkaian pekerja: contoh membina sistem penyegerakan data masa nyata. 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)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu 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)

Apakah perpustakaan sumber terbuka c++? Apakah perpustakaan sumber terbuka c++? Apr 22, 2024 pm 05:48 PM

C++ menyediakan set perpustakaan sumber terbuka yang kaya yang meliputi fungsi berikut: struktur dan algoritma data (Perpustakaan Templat Standard) berbilang benang, ungkapan biasa (Boost) antara muka pengguna grafik (Eigen) antara muka pengguna grafik (Qt) penglihatan komputer (OpenCV) pembelajaran mesin. (TensorFlow) Penyulitan (OpenSSL) Pemampatan data (zlib) Pengaturcaraan rangkaian (libcurl) Pengurusan pangkalan data (sqlite3)

Bagaimanakah fungsi C++ mengendalikan pertanyaan DNS dalam pengaturcaraan rangkaian? Bagaimanakah fungsi C++ mengendalikan pertanyaan DNS dalam pengaturcaraan rangkaian? Apr 27, 2024 pm 06:39 PM

Pustaka standard C++ menyediakan fungsi untuk mengendalikan pertanyaan DNS dalam pengaturcaraan rangkaian: gethostbyname(): Cari maklumat hos berdasarkan nama hos. gethostbyaddr(): Cari maklumat hos berdasarkan alamat IP. dns_lookup(): Asynchronously menyelesaikan DNS.

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.

Apakah protokol biasa untuk pengaturcaraan rangkaian Java? Apakah protokol biasa untuk pengaturcaraan rangkaian Java? Apr 15, 2024 am 11:33 AM

Protokol yang biasa digunakan dalam pengaturcaraan rangkaian Java termasuk: TCP/IP: digunakan untuk penghantaran data dan pengurusan sambungan yang boleh dipercayai. HTTP: digunakan untuk penghantaran data web. HTTPS: Versi HTTP selamat yang menggunakan penyulitan untuk menghantar data. UDP: Untuk pemindahan data yang cepat tetapi tidak stabil. JDBC: digunakan untuk berinteraksi dengan pangkalan data hubungan.

Bagaimanakah fungsi C++ melaksanakan keselamatan rangkaian dalam pengaturcaraan rangkaian? Bagaimanakah fungsi C++ melaksanakan keselamatan rangkaian dalam pengaturcaraan rangkaian? Apr 28, 2024 am 09:06 AM

Fungsi C++ boleh mencapai keselamatan rangkaian dalam pengaturcaraan rangkaian Kaedah termasuk: 1. Menggunakan algoritma penyulitan (openssl) untuk menyulitkan komunikasi 2. Menggunakan tandatangan digital (cryptopp) untuk mengesahkan integriti data dan identiti pengirim ( htmlcxx) untuk menapis dan membersihkan input pengguna.

Bermula dengan asas Java kepada aplikasi praktikal: Bagaimana untuk bermula dengan cepat? Bermula dengan asas Java kepada aplikasi praktikal: Bagaimana untuk bermula dengan cepat? May 08, 2024 am 08:30 AM

Panduan kemasukan ke amalan Java: termasuk pengenalan sintaks asas (pembolehubah, operator, aliran kawalan, objek, kelas, kaedah, warisan, polimorfisme, enkapsulasi), perpustakaan kelas teras Java (pengendalian pengecualian, koleksi, generik, aliran input/output , pengaturcaraan rangkaian, tarikh dan masa API), kes praktikal (aplikasi kalkulator, termasuk contoh kod).

Panduan resolusi alamat fungsi biasa Golang Panduan resolusi alamat fungsi biasa Golang Apr 08, 2024 pm 02:18 PM

Fungsi utama untuk menghuraikan alamat dalam bahasa Go termasuk: net.ParseIP(): Menghuraikan alamat IPv4 atau IPv6. net.ParseCIDR(): Parse teg CIDR. net.ResolveIPAddr(): Selesaikan nama hos atau alamat IP ke dalam alamat IP. net.ResolveTCPAddr(): Selesaikan nama hos dan port ke alamat TCP. net.ResolveUDPAddr(): Selesaikan nama hos dan port ke alamat UDP.

Bagaimanakah pengaturcaraan rangkaian Java menggunakan UDP untuk komunikasi tanpa sambungan? Bagaimanakah pengaturcaraan rangkaian Java menggunakan UDP untuk komunikasi tanpa sambungan? Apr 15, 2024 pm 12:51 PM

UDP (User Datagram Protocol) ialah protokol rangkaian tanpa sambungan ringan yang biasa digunakan dalam aplikasi sensitif masa. Ia membenarkan aplikasi menghantar dan menerima data tanpa membuat sambungan TCP. Contoh kod Java boleh digunakan untuk mencipta pelayan dan klien UDP, dengan pelayan mendengar datagram masuk dan bertindak balas, dan klien menghantar mesej dan menerima respons. Kod ini boleh digunakan untuk membina kes penggunaan dunia sebenar seperti aplikasi sembang atau sistem pengumpulan data.

See all articles