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
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();
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
Selepas bermula, mesej gesaan berikut akan muncul:
Workerman[2022]: Worker starting... Workerman[2022]: Worker started.
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
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();
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();
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!