Rumah >rangka kerja php >Laravel >Contoh untuk menerangkan penggunaan mudah baris gilir Laravel
Artikel ini membawa anda pengetahuan tentang laravel terutamanya memperkenalkan baris gilir Laravel, dalam keadaan apa untuk menggunakan baris gilir, mengkonfigurasi storan baris gilir dan isu lain yang berkaitan.
[Cadangan berkaitan: tutorial pembelajaran laravel]
Artikel ini akan memperkenalkan cara menggunakan baris gilir dalam Laravel dan memahami sebabnya is used Queue
Memakan masa, seperti memuat naik fail dan kemudian melakukan beberapa penukaran format, dsb.
Jika anda perlu memastikan kadar penghantaran, seperti menghantar mesej teks, kerana anda perlu menghubungi API orang lain, peluang kegagalan sentiasa ada, jadi untuk memastikan penghantaran, mencuba semula adalah penting.
Rekodkan proses penggunaan:
Fail konfigurasi baris gilir disimpan dalam config/queue.php. Anda boleh pilih redis dan pangkalan data di sini dan lain-lain. Kaedah penggunaan adalah seperti berikut.
Pangkalan Data
Buat tugas storan jadual data dan jalankan pemindahan data selepas melaksanakan perintah artisan
php artisan queue:table php artisan migrate
Redis
Untuk menggunakan redis pemandu gilir, anda Anda perlu mengkonfigurasi sambungan pangkalan data Redis dalam fail konfigurasi anda config/database.php.
Jika sambungan baris gilir Redis anda menggunakan kelompok Redis, nama baris gilir anda mesti mengandungi teg cincang kunci. Ini adalah untuk memastikan bahawa semua kekunci Redis untuk baris gilir yang diberikan diletakkan dalam cincang yang sama:
'redis' => [ 'driver' => 'redis', 'connection' => 'default', 'queue' => 'default', 'retry_after' => 90, ],
Kelas tugas untuk baris gilir berada dalam apl/ Pekerjaan / direktori
php artisan make:job SaveBusLine
Ubah suai fail seperti berikut:
namespace App\Jobs; use App\Http\Repository\BusRepository; use Illuminate\Bus\Queueable; use Illuminate\Queue\SerializesModels; use Illuminate\Queue\InteractsWithQueue; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Foundation\Bus\Dispatchable; class SaveBusLine implements ShouldQueue { use Dispatchable, InteractsWithQueue, Queueable, SerializesModels; /** * 任务最大尝试次数。 * * @var int */ public $tries = 3; /** * 任务运行的超时时间。 * * @var int */ public $timeout = 60; private $datum; /** * Create a new job instance. * @param array|object $datum * * @return void */ public function __construct($datum) { $this->datum = $datum; } /** * Execute the job. * * @return void */ public function handle() { BusRepository::getInstent()->updateBusLine($this->datum); } }
Panggil kaedah baris gilir dalam pengawal atau gudang:
use App\Jobs\SaveBusLine; use Carbon\Carbon; /***************** 队列操作 start *******************/ SaveBusLine::dispatch($arrayData)->delay(Carbon::now()->addMinute(1)); /***************** 队列操作 end *******************/
php artisan queue:work
{tip} Jika mengkonfigurasi Penyelia sendiri secara manual kedengaran agak menggembirakan, anda boleh mempertimbangkan untuk menggunakan Laravel Forge, yang boleh memasang dan mengkonfigurasi anda secara automatik Projek Laravel.
Mengkonfigurasi Penyelia
sudo apt-get install supervisor
Fail konfigurasi penyelia biasanya diletakkan dalam direktori /etc/supervisor/conf.d. Dalam direktori ini anda boleh mencipta sebarang bilangan fail konfigurasi untuk memberitahu Penyelia cara memantau proses anda. Contohnya, kami mencipta laravel-worker.conf untuk memulakan dan memantau proses gilir:kerja:
Arahan nuprocs dalam contoh ini akan meminta Penyelia menjalankan dan memantau 8 proses gilir:kerja, dan di dalamnya Mulakan semula selepas larian yang gagal. Sudah tentu, anda mesti menukar perintah perintah queue:work redis untuk memaparkan pemacu giliran pilihan anda. Anda juga perlu mengubah suai pengguna pelaksanaan pengguna = Proses:
Untuk maklumat lanjut tentang tetapan dan penggunaan Penyelia, sila rujuk dokumentasi rasmi Penyelia.
[program:laravel-worker] process_name=%(program_name)s_%(process_num)02d command=php ~/laravel/artisan queue:work redis --sleep=3 --tries=3 autostart=true autorestart=true user=lisgroup numprocs=8 redirect_stderr=true stdout_logfile=/home/lisgroup/logs/worker.log5. Mengendalikan tugas yang gagal Kadangkala tugasan dalam baris gilir anda akan gagal. Jangan risau, perkara tidak akan sentiasa berjalan lancar. Laravel mempunyai cara mudah terbina dalam untuk menentukan bilangan maksimum kali tugas akan dicuba semula. Apabila tugasan melebihi bilangan percubaan semula ini, ia akan dimasukkan ke dalam jadual data failed_jobs. Untuk mencipta fail migrasi untuk jadual failed_jobs, anda boleh menggunakan perintah queue:failed-table, dan kemudian gunakan perintah migrate Artisan untuk menjana jadual failed_jobs:
Kemudian jalankan pemproses baris gilir, dan apabila memanggil pekerja baris gilir, anda Bilangan percubaan semula maksimum untuk tugasan hendaklah ditentukan melalui parameter --tries. Jika tidak dinyatakan, tugasan akan dicuba semula secara kekal:
6. Kosongkan tugasan yang gagalsudo supervisorctl reread sudo supervisorctl update sudo supervisorctl start laravel-worker:*
Anda boleh mentakrifkan kaedah yang gagal secara langsung dalam kelas tugasan, yang boleh menjalankan tugas apabila tugas gagal. Tempat ini sesuai untuk menghantar amaran kepada pengguna atau menetapkan semula operasi pelaksanaan tugas. Maklumat pengecualian yang menyebabkan kegagalan tugas akan dihantar kepada kaedah yang gagal:
[Cadangan berkaitan:tutorial video laravel
]php artisan queue:failed-table php artisan migrate
Atas ialah kandungan terperinci Contoh untuk menerangkan penggunaan mudah baris gilir Laravel. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!