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.
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.
Di bawah ini kami akan memperkenalkan langkah demi langkah cara menggunakan Baris Gilir Laravel untuk mengendalikan tugas tak segerak.
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
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:
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, ], ]
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()); } }
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.
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'));
Atau anda boleh menggunakan kaedah dispatch() untuk meletakkan tugasan ke dalam baris gilir, seperti ini:
SendEmail::dispatch('example@test.com');
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
Menjalankan arahan ini akan memulakan pendengar dan memproses tugasan dalam baris gilir.
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.
Dalam sistem Ubuntu, anda boleh menggunakan arahan berikut untuk memasang Supervisor:
sudo apt-get update sudo apt-get install supervisor
Buat fail konfigurasi dalam direktori /etc/supervisor/conf.d, contohnya myqueue.conf:
nano /etc/supervisor/conf.d/myqueue.conf
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
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
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
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!