Rumah > rangka kerja php > Laravel > Pembangunan Laravel: Bagaimana untuk mengurus tugas tak segerak menggunakan Baris Gilir dan Penyelia Laravel?

Pembangunan Laravel: Bagaimana untuk mengurus tugas tak segerak menggunakan Baris Gilir dan Penyelia Laravel?

王林
Lepaskan: 2023-06-13 16:04:16
asal
923 orang telah melayarinya

Pembangunan Laravel: Bagaimana untuk menggunakan Barisan Laravel dan Penyelia untuk mengurus tugas tak segerak?

Dalam aplikasi web moden, tugas tak segerak telah menjadi bahagian penting dalam perniagaan harian. Tugas tak segerak boleh meningkatkan masa tindak balas aplikasi, mengoptimumkan pengalaman pengguna dan meningkatkan kebolehskalaan aplikasi. Laravel Queues ialah alat berkuasa yang disediakan oleh rangka kerja Laravel untuk mengendalikan tugas tak segerak dan baris gilir mesej. Artikel ini akan memperkenalkan konsep dan penggunaan Laravel Queues, dan menggabungkannya dengan Penyelia untuk mengurus tugas tak segerak.

Apakah itu Laravel Queues?

Laravel Queues ialah kaedah untuk mengendalikan tugas tak segerak dan baris gilir mesej. Laravel Queues membolehkan anda meletakkan tugas yang memakan masa ke dalam baris gilir tanpa menjejaskan masa tindak balas permintaan web anda. Contohnya, menghantar e-mel, memproses video atau menjana PDF semuanya adalah operasi yang memakan masa dan menggunakan baris gilir untuk meletakkannya dalam pemprosesan latar belakang boleh menjadikan aplikasi anda lebih cekap dan responsif.

Laravel Queues menyokong berbilang teknologi bahagian belakang seperti Pangkalan Data, Redis, Beanstalkd dan Amazon SQS melalui beberapa pemacu baris gilir terbina dalam. Ini membolehkan pembangun menggunakan teknologi baris gilir pilihan mereka untuk mengendalikan tugas tak segerak.

Menggunakan Baris Gilir Laravel

Di bawah ini kami akan memperkenalkan langkah demi langkah cara menggunakan Baris Gilir Laravel untuk mengendalikan tugas tak segerak.

Langkah Satu: Konfigurasi Pemacu Gilir

Terdapat fail dipanggil queue.php dalam fail konfigurasi Laravel yang boleh anda gunakan untuk mengkonfigurasi Pemacu Gilir dan baris gilir. Anda boleh menjana fail queue.php dengan arahan berikut:

php artisan queue:table
php artisan queue:failed-table
php artisan migrate
Salin selepas log masuk

Ini akan menjana fail migrasi dan jadual gilir. Jalankan arahan migrasi untuk melaksanakan migrasi.

Dalam fail queue.php, anda boleh memilih untuk menggunakan pelbagai pemacu gilir:

  • Pemandu pangkalan data - menyimpan tugas dalam pangkalan data, yang boleh Sebagai sistem beratur peringkat permulaan.
  • Redis Driver - Menggunakan sokongan baris gilir terbina dalam Redis.
  • Pemandu Beanstalkd - Menggunakan perkhidmatan baris gilir mesej Beanstalkd.
  • Pemacu Amazon SQS - Menggunakan Amazon Simple Queue Service (SQS).

Sebagai contoh, jika anda ingin menggunakan pemacu baris gilir Redis, sila konfigurasikan fail queue.php seperti berikut:

'default' => env('QUEUE_CONNECTION', 'redis'),
'connections' => [
    'redis' => [
        'driver' => 'redis',
        'connection' => 'default',
        'queue' => env('REDIS_QUEUE', 'default'),
        'retry_after' => 90,
        'block_for' => null,
    ],
]
Salin selepas log masuk

Langkah 2: Buat kelas tugas giliran

Seterusnya, anda perlu membuat kelas tugas baris gilir untuk mengendalikan tugas tak segerak. Kelas ini mestilah kelas PHP mudah yang mentakrifkan logik tugas. Contohnya, kod berikut ialah kelas tugas tak segerak untuk menghantar e-mel:

class SendEmail implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

    protected $email;
    /**
     * Create a new job instance.
     *
     * @return void
     */
    public function __construct($email)
    {
        $this->email = $email;
    }
    /**
     * Execute the job.
     *
     * @return void
     */
    public function handle()
    {
        Mail::to($this->email)->send(new WelcomeEmail());
    }
}
Salin selepas log masuk

Kelas ini melaksanakan antara muka ShouldQueue, yang diperlukan untuk memberitahu Laravel untuk menukar kelas ini kepada kelas tugas tak segerak. Kaedah handle() mentakrifkan logik khusus tugasan, jadi tugasan yang anda perlu kendalikan secara tak segerak boleh dilakukan di sini.

Langkah 3: Tolak tugas ke dalam baris gilir

Sekarang anda mempunyai tugas baris gilir dan pemandu baris gilir bersedia, langkah seterusnya ialah memasukkan tugasan ke dalam baris gilir. Gunakan kod berikut untuk memanggil baris gilir Eloquent di mana-mana dalam projek anda:

use AppJobsSendEmail; 
use IlluminateSupportFacadesQueue;
...
Queue::push(new SendEmail('example@test.com'));
Salin selepas log masuk

Atau anda boleh menggunakan kaedah dispatch() untuk meletakkan tugasan ke dalam baris gilir, seperti ini:

SendEmail::dispatch('example@test.com');
Salin selepas log masuk

Langkah 4 : Laksanakan tugasan gilir

Sebaik sahaja anda meletakkan tugasan ke dalam baris gilir, tugasan itu akan dihantar ke baris gilir, menunggu pelaksanaan. Anda boleh menggunakan kod berikut untuk menjalankan baris gilir:

php artisan queue:work
Salin selepas log masuk

Menjalankan arahan ini akan memulakan pendengar dan memproses tugasan dalam baris gilir.

Gunakan Penyelia untuk mengurus tugas tak segerak

Memandangkan tugas baris gilir perlu dijalankan di latar belakang, daemon proses perlu disediakan pada pelayan untuk memastikan tugasan boleh terus dilaksanakan. Penyelia ialah daemon proses yang biasa digunakan yang memastikan proses latar belakang tidak ditamatkan secara tidak normal dan memulakannya semula apabila diperlukan.

Langkah 1: Pasang Supervisor

Dalam sistem Ubuntu, anda boleh menggunakan arahan berikut untuk memasang Supervisor:

sudo apt-get update
sudo apt-get install supervisor
Salin selepas log masuk

Langkah 2: Buat fail konfigurasi Supervisor

Buat fail konfigurasi dalam direktori /etc/supervisor/conf.d, contohnya myqueue.conf:

nano /etc/supervisor/conf.d/myqueue.conf
Salin selepas log masuk

Tambah kandungan berikut pada fail konfigurasi, pastikan anda menukar laluan, arahan dan nama pengguna untuk Memadankan program anda:

[program:myqueue]
process_name=%(program_name)s_%(process_num)02d
command=/usr/bin/php /path/to/artisan queue:work --sleep=3 --tries=3 --daemon
autostart=true
autorestart=true
user=username
numprocs=1
redirect_stderr=true
stdout_logfile=/path/to/storage/logs/myqueue.log
Salin selepas log masuk

Langkah 3: Muat Semula Penyelia

Selepas anda menukar fail konfigurasi Penyelia, anda perlu memberitahu Penyelia untuk memuat semula fail konfigurasi. Gunakan arahan berikut untuk memuatkan semula Penyelia:

sudo supervisorctl reread

sudo supervisorctl update

sudo supervisorctl start all
Salin selepas log masuk

Langkah 4: Lihat log Penyelia

Anda boleh melihat output dan maklumat ralat tugas tak segerak dalam fail log Penyelia. Sebagai contoh, anda boleh melihat log Penyelia dengan melihat laluan dan nama fail log yang dinyatakan dalam fail konfigurasi:

tail -f /path/to/storage/logs/myqueue.log
Salin selepas log masuk

Kesimpulan

Artikel ini memperkenalkan cara menggunakan Barisan Laravel dan Penyelia untuk mengurus tak segerak tugasan, menggunakan Laravel Queues memudahkan untuk membuat baris gilir tugasan yang memakan masa dan menjadikan aplikasi lebih cekap dan responsif. Gunakan Penyelia untuk memastikan bahawa tugas latar belakang boleh terus dijalankan dan dimulakan semula secara automatik apabila diperlukan. Saya harap artikel ini akan membantu perkembangan anda.

Atas ialah kandungan terperinci Pembangunan Laravel: Bagaimana untuk mengurus tugas tak segerak menggunakan Baris Gilir dan Penyelia Laravel?. 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