Rumah > rangka kerja php > Workerman > Amalan pembangunan pekerja: melaksanakan sistem baris gilir mesej yang diedarkan

Amalan pembangunan pekerja: melaksanakan sistem baris gilir mesej yang diedarkan

PHPz
Lepaskan: 2023-08-05 19:04:45
asal
1390 orang telah melayarinya

Amalan Pembangunan Pekerja: Melaksanakan Sistem Gilir Mesej Teragih

Pengenalan:
Dalam aplikasi moden, sistem baris gilir mesej merupakan komponen penting yang digunakan untuk melaksanakan komunikasi tak segerak antara aplikasi. Dalam persekitaran konkurensi tinggi, sistem baris gilir mesej boleh memainkan peranan dalam pencukuran puncak dan pengisian lembah, meningkatkan kestabilan dan prestasi keseluruhan sistem. Artikel ini akan memperkenalkan cara menggunakan rangka kerja Workerman untuk membangunkan sistem baris gilir mesej yang diedarkan dan menyediakan contoh kod yang berkaitan.

1. Penyediaan persekitaran:
Sebelum bermula, kita perlu menyediakan persekitaran berikut:

  1. PHP7.0 dan ke atas;
  2. Kerangka kerja pekerja; .
  3. config
  4. config. php


  • Libraries
    • Workerman

      • vendor

          composer.json
        • Tambah yang berikut pada fail composer.json dalam myqueue directory Dependencies:

          {
            "require": {
           "workerman/workerman": ">=3.5"
            }
          }
          Salin selepas log masuk
          • Laksanakan arahan composer install untuk memasang rangka kerja Workerman dan kebergantungannya.
        • 4 Tulis kod:
        Buat fail Index.php dalam direktori myqueue/Applications/MessageServer untuk memulakan perkhidmatan baris gilir mesej:
      • <?php
        use WorkermanWorker;
        require_once __DIR__ . '/../../Libraries/Workerman/Autoloader.php';
        
        // 创建一个Worker实例
        $worker = new Worker('text://0.0.0.0:2346');
        
        // 设置进程数
        $worker->count = 4;
        
        // 处理接收到的消息
        $worker->onMessage = function($connection, $data)
        {
            // 将消息存储到Redis队列
            $redis = new Redis();
            $redis->connect('127.0.0.1', 6379);
            $redis->lpush('message_queue', $data);
        };
        
        // 启动Worker
        Worker::runAll();
        ?>
        Salin selepas log masuk
      Dalam myqueue/Applications/MessageServer/. Cipta fail config.php dalam direktori config untuk mengkonfigurasi maklumat pangkalan data Redis:
    • <?php
      return array(
          'redis_host' => '127.0.0.1',
          'redis_port' => 6379,
      );
      ?>
      Salin selepas log masuk
    • 5. Menggunakan baris gilir mesej:

      Dalam aplikasi, kita boleh menggunakan kod berikut untuk menghantar mesej ke baris gilir mesej:

      <?php
      $message = 'Hello, Workerman!';
      $address = '127.0.0.1:2346';
      
      $socket = stream_socket_client("tcp://$address");
      fwrite($socket, $message);
      fclose($socket);
      ?>
      Salin selepas log masuk
        6. Gunakan mesej:
      • Buat skrip pengguna untuk mendapatkan mesej daripada baris gilir mesej dan lakukan operasi yang berkaitan.
      • <?php
        // 从Redis队列中获取消息
        $redis = new Redis();
        $redis->connect('127.0.0.1', 6379);
        $message = $redis->rpop('message_queue');
        
        // 执行相关操作
        // ...
        ?>
        Salin selepas log masuk
      7. Jalankan program:
    • Mulakan perkhidmatan baris gilir mesej: jalankan arahan php myqueue/Applications/MessageServer/Index.php start
    • Mulakan skrip pengguna: laksanakan arahan php consumer.php.
8. Ringkasan:

Artikel ini memperkenalkan cara menggunakan rangka kerja Workerman untuk membangunkan sistem baris gilir mesej yang diedarkan dan mencapai komunikasi tak segerak dengan menyimpan mesej dalam baris gilir Redis. Dengan cara ini, kami boleh melaksanakan pemprosesan mesej dalam persekitaran konkurensi tinggi dan meningkatkan prestasi dan kestabilan sistem. Pembangun boleh menambah baik dan mengembangkan sistem baris gilir mesej berdasarkan keperluan khusus.

Atas ialah kandungan terperinci Amalan pembangunan pekerja: melaksanakan sistem baris gilir mesej yang diedarkan. 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