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

Amalan pembangunan pekerja: melaksanakan sistem baris gilir mesej yang diedarkan

PHPz
PHPzasal
2023-08-05 19:04:451352semak imbas

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"
            }
          }
          • 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();
        ?>
      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,
      );
      ?>
    • 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);
      ?>
        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');
        
        // 执行相关操作
        // ...
        ?>
      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!

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