Rumah >rangka kerja php >Workerman >Bagaimana saya membuat pelayan TCP yang mudah menggunakan Workerman?

Bagaimana saya membuat pelayan TCP yang mudah menggunakan Workerman?

百草
百草asal
2025-03-11 14:58:17628semak imbas

Artikel ini menunjukkan mewujudkan pelayan TCP yang mudah menggunakan perpustakaan Workerman PHP. IT memperincikan persediaan pelayan, pengendalian sambungan serentak melalui seni bina yang didorong oleh acara Workerman, pilihan konfigurasi asas (misalnya, kiraan pekerja, penggunaan semula pelabuhan), an

Bagaimana saya membuat pelayan TCP yang mudah menggunakan Workerman?

Bagaimana untuk membuat pelayan TCP yang mudah menggunakan Workerman?

Mewujudkan pelayan TCP yang mudah dengan Workerman adalah mudah. Pertama, pastikan anda memasang pekerja. Anda biasanya boleh memasangnya melalui Komposer: composer require workerman/workerman . Kemudian, buat fail PHP baru (misalnya, server.php ). Kod berikut menetapkan pelayan TCP asas yang mendengar pada port 2345:

 <code class="php"><?php require_once __DIR__ . &#39;/vendor/autoload.php&#39;; use Workerman\Worker; $worker = new Worker("tcp://0.0.0.0:2345"); $worker->onConnect = function($connection) { echo "New connection from {$connection->getRemoteIp()}:{$connection->getRemotePort()}\n"; }; $worker->onMessage = function($connection, $data) { // Echo the data back to the client $connection->send($data); }; $worker->onClose = function($connection) { echo "Connection closed: {$connection->getRemoteIp()}:{$connection->getRemotePort()}\n"; }; Worker::runAll();</code>

Kod ini menggunakan kelas Workerman\Worker untuk membuat pekerja TCP. tcp://0.0.0.0:2345 Menentukan alamat dan pelabuhan mendengar. The onConnect , onMessage , dan onClose Callbacks mengendalikan peristiwa sambungan, data masuk, dan penutupan sambungan masing -masing. Worker::runAll() Memulakan pelayan. Ingat untuk menjalankan skrip ini dari terminal anda menggunakan php server.php .

Bolehkah Workerman mengendalikan pelbagai sambungan pelanggan TCP secara serentak?

Ya, Workerman direka untuk mengendalikan pelbagai sambungan pelanggan TCP serentak. Ia menggunakan model multi-proses atau multi-thread (bergantung kepada konfigurasi anda) untuk menguruskan banyak sambungan serentak. Kunci pengendalian serentak ini terletak pada seni bina pekerja yang didorong oleh acara. Apabila sambungan tiba atau data diterima, Workerman mencetuskan panggilan balik yang sepadan ( onConnect , onMessage , dll.) Tanpa menyekat sambungan lain. Ini membolehkan ia mengendalikan banyak pelanggan tanpa kemerosotan prestasi. Bilangan sambungan serentak yang dapat dikendalikan bergantung kepada sumber pelayan anda (CPU, memori, jalur lebar rangkaian). Anda boleh menyesuaikan bilangan proses pekerja untuk mengoptimumkan keperluan khusus anda melalui pilihan konfigurasi Workerman.

Apakah tetapan konfigurasi asas untuk pelayan TCP Workerman?

Workerman menawarkan beberapa pilihan konfigurasi untuk menyesuaikan pelayan TCP anda. Ini biasanya ditetapkan dalam objek Worker . Berikut adalah beberapa tetapan asas:

  • worker->count : Menentukan bilangan proses pekerja. Meningkatkan bilangan ini dapat meningkatkan prestasi dengan lebih banyak pelanggan, tetapi terlalu banyak proses dapat membebankan sistem. Lalai biasanya 1.
  • worker->name : Menugaskan nama kepada pekerja untuk mengenal pasti lebih baik dalam log dan pemantauan.
  • worker->reusePort : Membolehkan penggunaan semula pelabuhan, membolehkan beberapa pelayan mendengar di pelabuhan yang sama. Berguna dalam beberapa senario tetapi memerlukan pertimbangan yang teliti.
  • worker->transport : Menentukan Protokol Lapisan Pengangkutan (misalnya, 'TCP', 'UDP'). Lalai adalah 'TCP'.
  • worker->ssl : Membolehkan penyulitan SSL/TLS. Memerlukan mengkonfigurasi sijil SSL.

Anda boleh mengubah suai tetapan ini secara langsung dalam fail server.php anda sebelum Worker::runAll() . Contohnya:

 <code class="php">$worker = new Worker("tcp://0.0.0.0:2345"); $worker->count = 4; // Use 4 worker processes $worker->name = "MyTCPServer"; // ... other settings ...</code>

Bagaimana saya menghantar dan menerima data menggunakan pelayan TCP Workerman?

Menghantar dan menerima data dikendalikan melalui objek $connection dalam panggilan balik onMessage . Pelayan menerima data melalui parameter $data fungsi onMessage . Untuk menghantar data kembali kepada pelanggan, gunakan kaedah $connection->send() .

Menerima data:

Parameter $data dalam panggilan balik onMessage mengandungi data yang diterima daripada klien. Anda boleh memproses data ini seperti yang diperlukan. Contohnya:

 <code class="php">$worker->onMessage = function($connection, $data) { $receivedData = trim($data); // Remove leading/trailing whitespace echo "Received: " . $receivedData . "\n"; // Process the received data... $response = "Server received: " . $receivedData; $connection->send($response); };</code>

Menghantar data:

Untuk menghantar data kembali kepada pelanggan, gunakan kaedah $connection->send() :

 <code class="php">$worker->onMessage = function($connection, $data) { // ... process data ... $connection->send("Hello from the server!"); };</code>

Ingatlah untuk mengendalikan kesilapan yang berpotensi (contohnya, kegagalan sambungan) dengan sewajarnya dalam panggilan balik anda. Ini menyediakan rangka asas untuk menghantar dan menerima data dalam pelayan TCP Workerman anda. Pengendalian data yang lebih kompleks mungkin melibatkan siriisasi atau teknik penstrukturan data lain.

Atas ialah kandungan terperinci Bagaimana saya membuat pelayan TCP yang mudah menggunakan Workerman?. 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