Rumah  >  Artikel  >  rangka kerja php  >  Bagaimana untuk menggunakan Supervisor untuk mengurus baris gilir ThinkPHP6?

Bagaimana untuk menggunakan Supervisor untuk mengurus baris gilir ThinkPHP6?

WBOY
WBOYasal
2023-06-12 08:51:091460semak imbas

Memandangkan aplikasi web terus berkembang, kami perlu mengendalikan sejumlah besar tugas untuk mengekalkan kestabilan dan ketersediaan aplikasi. Menggunakan sistem beratur adalah satu penyelesaian. ThinkPHP6 menyediakan sistem baris gilir terbina dalam untuk mengurus tugas. Walau bagaimanapun, pengendalian sebilangan besar tugas memerlukan pengurusan baris gilir yang lebih baik, yang boleh dicapai menggunakan Penyelia.

Artikel ini akan memperkenalkan cara menggunakan Supervisor untuk mengurus baris gilir ThinkPHP6. Sebelum itu, kita perlu memahami beberapa konsep asas:

  1. Sistem baris gilir
    Sistem baris gilir ialah cara memproses tugasan secara tidak segerak, menambah tugasan pada baris gilir dan bukannya memprosesnya secara langsung. Sebaik sahaja tugasan ditambahkan pada baris gilir, ia boleh diberikan kepada pekerja yang berbeza untuk mengelakkan penyekatan jangka panjang aplikasi web. Sistem baris gilir juga boleh menyelesaikan beberapa operasi tugasan yang kompleks.
  2. Tugas
    Dalam sistem baris gilir, tugasan ialah kerja yang perlu dilaksanakan. Anda boleh membungkus kod yang perlu dilaksanakan secara tak segerak ke dalam tugas, dan kemudian menambah tugasan pada baris gilir untuk menunggu pemprosesan seterusnya. Kita boleh menggunakan komponen baris gilir dalam rangka kerja PHP atau perpustakaan pihak ketiga untuk mengurus tugas, seperti komponen baris gilir Laravel atau Beanstalkd, dsb.
  3. Penyelia
    Penyelia ialah sistem kawalan proses yang boleh memantau dan mengawal satu atau lebih proses, termasuk pekerja baris gilir. Penyelia boleh menjadikan sistem giliran lebih stabil dan tahan lama. Menggunakan Penyelia boleh memulakan semula pekerja secara automatik apabila tugas gagal, dan juga boleh memastikan bahawa tugas baris gilir boleh terus diproses selepas aplikasi web dimulakan semula.

Setelah memahami konsep asas ini, kami akan memperkenalkan cara menggunakan Supervisor untuk menguruskan baris gilir ThinkPHP6.

Langkah 1: Pasang Penyelia

Untuk menggunakan Penyelia bagi pengurusan baris gilir, kita perlu memasang Penyelia terlebih dahulu. Pada sistem Ubuntu, anda boleh menggunakan arahan berikut untuk memasang:

sudo apt-get install supervisor

Pada sistem CentOS, anda boleh menggunakan arahan berikut untuk memasang:

sudo yum install supervisor

Selepas pemasangan selesai, anda boleh menggunakan arahan berikut untuk memulakan Penyelia:

sudo systemctl start supervisor

Pada masa yang sama, kita juga perlu mencipta fail konfigurasi baharu dalam fail konfigurasi/etc/supervisor/conf.d/ untuk mengurus pekerja baris gilir. Kami boleh mencipta fail dengan sebarang nama dalam direktori ini, seperti laravel-worker.conf. Seterusnya, kami akan membincangkan cara mengedit fail ini.

Langkah 2: Edit fail konfigurasi Penyelia

Edit fail konfigurasi Penyelia dan tambah pekerja ke senarai pantauan Penyelia. Kita boleh menggunakan arahan berikut untuk mengedit fail konfigurasi yang baru kita buat:

sudo nano /etc/supervisor/conf.d/laravel-worker.conf

Tambah konfigurasi berikut pada fail:

[program:laravel-worker]
process_name=%(program_name)s_%(process_num)02d
directory=/var/www/laravel #修改为你的项目目录
command=php /var/www/laravel/artisan queue:work
autostart=true
autorestart=true
user=www-data #修改为你的Web服务器运行用户
numprocs=8 #工作者数量,此处建议设置为CPU核心数2-4倍
redirect_stderr=true
stdout_logfile=/var/www/laravel/storage/logs/worker.log #修改为你的日志文件位置

Selepas menambah konfigurasi di atas pada fail, kita boleh menggunakan arahan berikut untuk Muat Semula fail konfigurasi Penyelia:

sudo supervisorctl reread
sudo supervisorctl update

Dengan cara ini Penyelia boleh memulakan pekerja baris gilir kami dan menguruskan mereka. Kita boleh menggunakan arahan berikut untuk melihat semua proses yang dimulakan oleh Penyelia:

sudo supervisorctl status

Langkah 3: Uji tugas giliran

Kini, kami telah berjaya memulakan pekerja baris gilir menggunakan Penyelia. Seterusnya, kita perlu menguji tugas giliran. Mula-mula, pastikan anda mempunyai baris gilir dikonfigurasikan dalam aplikasi anda.

Tambahkan tugas ujian di suatu tempat dan biarkan baris gilir mula berfungsi. Contohnya, buat tugas menghantar E-mel:

<?php

namespace appqueue;

use thinkqueueJob;

class SendEmail
{
    public $user;

    public function __construct($user)
    {
        $this->user = $user;
    }

    public function fire(Job $job, $data)
    {
        //发送Email的代码
        if (Math.random() < 0.5) {
            // 处理失败
            $job->release(5);// 5秒后重试
        } else {
            // 成功处理
            $job->delete();
        }
    }
}

Tambah kaedah dalam pengawal dan tambah tugas:

<?php

namespace appcontroller;

use thinkController;
use thinkqueueQueue;

class Email extends Controller
{
    public function index()
    {
        $user = ['email' => 'test@test.com', 'name' => 'test'];
        $job = new ppqueueSendEmail($user);
        app('queue')->push($job);
    }
}

Dengan cara ini, kita boleh berjaya menggunakan Supervisor untuk mengurus baris gilir ThinkPHP6 . Jika anda ingin mengetahui lebih lanjut mengenai sistem baris gilir, anda boleh membaca dokumentasi rasmi. Saya harap artikel ini dapat membantu anda menjalankan aplikasi web anda dengan jayanya!

Atas ialah kandungan terperinci Bagaimana untuk menggunakan Supervisor untuk mengurus baris gilir ThinkPHP6?. 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