Rumah  >  Artikel  >  rangka kerja php  >  Penjelasan terperinci tentang perpustakaan sumber terbuka Workerman: Berkongsi contoh membina aplikasi pelayan konkurensi tinggi dengan cepat

Penjelasan terperinci tentang perpustakaan sumber terbuka Workerman: Berkongsi contoh membina aplikasi pelayan konkurensi tinggi dengan cepat

WBOY
WBOYasal
2023-08-05 16:37:031112semak imbas

Penjelasan terperinci tentang perpustakaan sumber terbuka Workerman: Berkongsi contoh membina aplikasi pelayan konkurensi tinggi dengan pantas

Pengenalan:
Dalam bidang IT, dengan perkembangan pesat Internet, permintaan untuk aplikasi pelayan konkurensi tinggi semakin meningkat. Untuk memenuhi permintaan ini, pembangun mencari pelbagai kaedah dan alatan untuk membina aplikasi pelayan yang cekap dan berskala. Sebagai perpustakaan sumber terbuka PHP, Workerman menyediakan penyelesaian untuk membina aplikasi pelayan konkurensi tinggi dengan cepat. Artikel ini akan memperkenalkan ciri dan kegunaan Workerman secara terperinci, dan menunjukkan fungsi berkuasanya melalui perkongsian contoh.

1. Pengenalan kepada Workerman
Workerman ialah rangka kerja PHP yang dibangunkan dan sumber terbuka oleh pembangun China Huang Yanhua Ia bertujuan untuk menyediakan penyelesaian pembangunan yang mudah, fleksibel, cekap dan stabil. Ciri utamanya adalah seperti berikut:

  1. Prestasi tinggi: Workerman adalah berdasarkan model pengaturcaraan dipacu peristiwa PHP, dan kernel dilaksanakan menggunakan mod pencetus tepi epoll, yang meningkatkan keupayaan pelayan untuk mengendalikan permintaan serentak. Berbanding dengan model IO penyekat segerak tradisional, prestasi Workerman telah dipertingkatkan dengan ketara.
  2. Sokongan berbilang protokol: Workerman menyokong protokol HTTP, WebSocket dan tersuai. Ini bermakna sama ada anda sedang membangunkan pelayan Web atau aplikasi komunikasi masa nyata, anda boleh berpuas hati.
  3. Skala yang baik: Workerman menyediakan antara muka sambungan yang kaya dan mekanisme pemalam. Pembangun boleh menyesuaikan pembangunan mengikut keperluan sebenar, dan boleh disepadukan dengan mudah dengan rangka kerja lain (seperti Laravel, Symfony, dll.).

2. Contoh penggunaan Workerman
Untuk menunjukkan kelebihan dan penggunaan Workerman dengan lebih intuitif, di bawah kami akan menggunakan contoh mudah untuk menunjukkan cara menggunakan Workerman untuk membina aplikasi bilik sembang berdasarkan WebSocket.

  1. Pasang Workerman
    Mula-mula, kita perlu memasang Workerman melalui Composer. Buka terminal baris arahan dan laksanakan arahan berikut:

komposer memerlukan pekerja/pekerja

  1. Buat aplikasi pelayan
    Buat fail bernama chat.php dan tulis kod berikut di dalamnya:
<?php

require __DIR__ . '/vendor/autoload.php';

use WorkermanWorker;

// 创建一个Worker监听8080端口,使用WebSocket协议通信
$ws_worker = new Worker("websocket://0.0.0.0:8080");

// 启动多个进程,以利用多核CPU
$ws_worker->count = 4;

// 响应浏览器请求时触发的回调函数
$ws_worker->onMessage = function ($connection, $data) {
    // 向所有客户端广播消息
    foreach ($ws_worker->connections as $client) {
        $client->send($data);
    }
};

// 运行Worker
Worker::runAll();

Kod di atas mencipta objek Pekerja WebSocket dan mendengar pada port 8080. $ws_worker->onMessageFungsi panggil balik digunakan untuk memproses mesej yang dihantar oleh penyemak imbas dan menghantar semula mesej dengan merentasi semua sambungan pelanggan, dengan itu menyiarkan mesej kepada semua pelanggan yang disambungkan.

  1. Mulakan aplikasi pelayan
    Dalam terminal baris arahan, tukar ke direktori tempat chat.php terletak, dan laksanakan arahan berikut untuk memulakan aplikasi pelayan:

php chat.php mula

  1. Tulis HTML halaman
    Buat fail bernama fail index .html dan tulis kod berikut di dalamnya:
<!DOCTYPE html>
<html>
<head>
    <title>Workerman聊天室</title>
    <style>
        #messages {
            height: 200px;
            overflow-y: scroll;
        }
    </style>
    <script>
        var ws = new WebSocket('ws://localhost:8080');

        ws.onopen = function () {
            console.log('连接成功!');
        };

        ws.onmessage = function (event) {
            var messages = document.getElementById('messages');
            messages.innerHTML += '<br>' + event.data;
            messages.scrollTop = messages.scrollHeight;
        };

        function sendMsg() {
            var input = document.getElementById('message');
            var msg = input.value;
            input.value = '';

            ws.send(msg);
        }
    </script>
</head>
<body>
    <div id="messages"></div>
    <input type="text" id="message" placeholder="请输入消息">
    <button onclick="sendMsg()">发送</button>
</body>
</html>

Kod di atas mencipta sambungan WebSocket dan menghantar mesej ke pelayan dengan memasukkan mesej pada halaman dan mengklik butang hantar. Pelayan menyiarkan mesej kepada semua pelanggan yang disambungkan, dan pelanggan memaparkan mesej pada halaman selepas menerimanya.

  1. Jalankan aplikasi
    Letakkan fail index.html dalam direktori akar pelayan web dan lawati http://localhost/index.html dalam penyemak imbas. Anda boleh mengalami aplikasi bilik sembang yang dibina berdasarkan Workerman.

Kesimpulan:
Artikel ini memperkenalkan ciri dan penggunaan perpustakaan sumber terbuka Workerman, dan menunjukkan melalui contoh cara menggunakan Workerman untuk membina aplikasi bilik sembang berdasarkan WebSocket. Workerman telah menjadi salah satu alat kegemaran pembangun kerana prestasi tinggi, sokongan berbilang protokol dan kebolehskalaan yang baik. Marilah kita maju ke hadapan dan bersama-sama meneroka lebih banyak kemungkinan untuk aplikasi pelayan konkurensi tinggi.

Atas ialah kandungan terperinci Penjelasan terperinci tentang perpustakaan sumber terbuka Workerman: Berkongsi contoh membina aplikasi pelayan konkurensi tinggi dengan cepat. 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