Rumah > rangka kerja php > Workerman > Cara menggunakan Workerman untuk melaksanakan pengaturcaraan rangkaian konkurensi tinggi

Cara menggunakan Workerman untuk melaksanakan pengaturcaraan rangkaian konkurensi tinggi

PHPz
Lepaskan: 2023-11-07 09:05:18
asal
1023 orang telah melayarinya

Cara menggunakan Workerman untuk melaksanakan pengaturcaraan rangkaian konkurensi tinggi

Dengan pembangunan berterusan aplikasi rangkaian, pengaturcaraan rangkaian serentak tinggi telah menjadi salah satu teknologi penting dalam pembangunan aplikasi rangkaian hari ini. Workerman ialah rangka kerja komunikasi rangkaian berprestasi tinggi berdasarkan PHP Ia menyediakan penyelesaian pengaturcaraan rangkaian yang lengkap, membolehkan kami melaksanakan pengaturcaraan rangkaian konkurensi tinggi dengan lebih mudah.

Artikel ini akan memperkenalkan cara menggunakan Workerman untuk melaksanakan pengaturcaraan rangkaian konkurensi tinggi melalui beberapa contoh kod khusus.

1. Install Workerman

Workerman ialah pakej sambungan pihak ketiga, kami perlu memasangnya melalui komposer. Masukkan arahan berikut dalam terminal:

composer require workerman/workerman
Salin selepas log masuk

Selepas pemasangan selesai, akan ada direktori vendor tambahan dalam direktori akar projek, yang mengandungi fail berkaitan Workerman.

2. Cipta pelayan TCP yang mudah

Mari buat pelayan TCP yang ringkas, pantau permintaan pautan pelanggan dan kembalikan data yang dihantar oleh pelanggan kepada pelanggan. Mula-mula, cipta fail server.php dalam direktori akar projek dengan kandungan berikut:

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

use WorkermanWorker;

$server = new Worker('tcp://0.0.0.0:8080');

$server->onConnect = function($connection) {
    echo "New client connected
";
};

$server->onMessage = function($connection, $data) {
    $connection->send($data);
};

$server->onClose = function($connection) {
    echo "Client closed connection
";
};

Worker::runAll();
Salin selepas log masuk

Dalam kod di atas, kami mencipta objek Pekerja baharu untuk mendengar permintaan sambungan pelanggan. Apabila klien menyambung ke pelayan, fungsi panggil balik onConnect dipanggil, di mana kami mengeluarkan mesej bahawa sambungan itu berjaya. Apabila klien menghantar mesej, pelayan akan memanggil fungsi panggil balik onMessage dan mengembalikan data yang dihantar oleh klien kepada klien secara utuh. Apabila pelanggan memutuskan sambungan, pelayan memanggil fungsi panggil balik onClose dan mengeluarkan mesej pemutusan sambungan. Akhir sekali, kami memanggil fungsi Worker::runAll() untuk memulakan pelayan.

3. Mulakan pelayan

Masukkan direktori akar projek dalam terminal dan masukkan arahan berikut untuk memulakan pelayan:

php server.php start
Salin selepas log masuk

Selepas bermula, mesej gesaan berikut akan muncul:

Workerman[2022]: Worker starting...
Workerman[2022]: Worker started.
Salin selepas log masuk

Menunjukkan bahawa pelayan telah dimulakan dengan jayanya.

4. Uji pelayan

Kita boleh menggunakan arahan telnet untuk menguji operasi biasa pelayan. Masukkan arahan berikut dalam terminal:

telnet 127.0.0.1 8080
Salin selepas log masuk

Selepas sambungan berjaya, anda boleh memasukkan beberapa kandungan, dan pelayan akan mengembalikan kandungan yang dimasukkan secara utuh. Apabila kita ingin memutuskan sambungan, kita boleh memasukkan Ctrl+] dan kemudian berhenti untuk keluar dari klien telnet.

5. Gunakan mod berbilang proses

Apabila terdapat banyak sambungan, mod proses tunggal tidak lagi dapat memenuhi permintaan Pada masa ini, kita boleh menggunakan mod berbilang proses untuk mencapai pemprosesan serentak yang tinggi. Berikut ialah kod sampel menggunakan mod berbilang proses Workerman:

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

use WorkermanWorker;

$worker = new Worker('tcp://0.0.0.0:8080');

$worker->count = 4;

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

$worker->onConnect = function($connection) {
    echo "New client connected
";
};

$worker->onMessage = function($connection, $data) {
    $connection->send($data);
};

$worker->onClose = function($connection) {
    echo "Client closed connection
";
};

Worker::runAll();
Salin selepas log masuk

Dalam kod di atas, kami telah menambah baris $worker->count = 4;, yang bermaksud bahawa 4 proses dibuka untuk mengendalikan permintaan pelanggan pada masa yang sama masa. Kami juga menambah fungsi panggil balik onWorkerStart baharu untuk mengeluarkan mesej apabila setiap proses bermula.

6. Gunakan protokol UDP

Pekerja juga boleh menggunakan protokol UDP dengan mudah untuk pengaturcaraan rangkaian. Berikut ialah contoh kod untuk pelayan UDP:

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

use WorkermanWorker;

$worker = new Worker('udp://0.0.0.0:8080');

$worker->onMessage = function($connection, $data) {
    $connection->send($data);
};

Worker::runAll();
Salin selepas log masuk

Antaranya, kami menggunakan udp://0.0.0.0:8080 untuk mencipta pelayan UDP dan mengembalikan data yang diterima secara utuh kepada klien dalam fungsi panggil balik onMessage.

Ringkasan

Artikel ini memperkenalkan cara menggunakan Workerman untuk melaksanakan pengaturcaraan rangkaian konkurensi tinggi melalui contoh kod tertentu. Daripada pelayan TCP mudah kepada mod berbilang proses kepada protokol UDP, Workerman menyediakan penyelesaian pengaturcaraan rangkaian lengkap, memudahkan kami melaksanakan pengaturcaraan rangkaian konkurensi tinggi.

Atas ialah kandungan terperinci Cara menggunakan Workerman untuk melaksanakan pengaturcaraan rangkaian konkurensi tinggi. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan