Rumah  >  Artikel  >  rangka kerja php  >  Beberapa cara untuk membatalkan tugas baris gilir dalam Laravel

Beberapa cara untuk membatalkan tugas baris gilir dalam Laravel

PHPz
PHPzasal
2023-04-21 10:00:502143semak imbas

Dalam Laravel, Queue ialah cara yang cekap untuk mengurus tugas tak segerak. Melalui baris gilir, kami boleh meletakkan beberapa tugas yang memakan masa ke latar belakang untuk pemprosesan, dengan itu meningkatkan prestasi dan kestabilan sistem. Walau bagaimanapun, dalam pembangunan sebenar, kita kadangkala perlu membatalkan tugasan dalam baris gilir. Artikel ini akan memperkenalkan beberapa kaedah dan langkah berjaga-jaga untuk membatalkan tugas baris gilir dalam Laravel.

Cara membatalkan tugas baris gilir

  1. Padamkan tugas dalam baris gilir
    Kami boleh membatalkan tugasan dengan memadamkan tugasan dalam baris gilir secara manual dalam konsol atau kod.

Dalam konsol, kita boleh menggunakan arahan berikut:

php artisan queue:failed
php artisan queue:forget {id}

where, baris gilir Perintah :failed akan menyenaraikan semua tugas yang gagal, termasuk ID dan sebab kegagalannya. Perintah queue:forget boleh membatalkan tugas yang ditentukan berdasarkan id yang diberikan. Walau bagaimanapun, pendekatan ini hanya berfungsi untuk tugasan yang gagal dalam baris gilir.

Dalam kod, kami boleh menggunakan kaedah deleteFailedJob Queue untuk memadamkan tugasan yang gagal, atau menggunakan arahan DEL Redis untuk memadamkan tugasan yang sedang dilaksanakan.

  1. Lemparkan pengecualian
    Dalam Laravel, kita boleh membatalkan pelaksanaan tugas dengan membuang pengecualian. Apabila pemproses baris gilir menghadapi pengecualian semasa melaksanakan tugas, ia secara automatik akan menandakan tugasan sebagai tugas yang gagal dan merekodkan maklumat ralat dalam log giliran. Agar pengecualian dapat ditangkap oleh pengendali, kita perlu membalut blok cuba-tangkap dalam tugas. Berikut ialah contoh mudah:

ruang nama AppJobs;

gunakan Exception;
gunakan IlluminateBusQueueable;
gunakan IlluminateContractsQueueShould 🎜>gunakan IlluminateFoundationBusDispatchable;
gunakan IlluminateQueueInteractsWithQueue;
gunakan IlluminateQueueSerializesModels;

kelas MyJob melaksanakan ShouldQueue

{🜎>
{🜎>

Gunakan mekanisme tamat masa
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

public function handle()
{
    try {
        // 任务执行代码
    } catch (Exception $e) {
        // 抛出异常,取消任务
        throw new Exception('任务已取消');
    }
}
Dalam Laravel, kita boleh menetapkan tamat masa untuk tugasan gilir. Jika tugasan tidak selesai dalam masa yang ditetapkan, pemproses secara automatik menandakannya sebagai tugas yang gagal. Kita boleh menggunakan mekanisme ini untuk membatalkan tugas yang sedang dilaksanakan. Berikut ialah contoh mudah:


    ruang nama AppJobs;
gunakan IlluminateBusQueueable;

gunakan IlluminateContractsQueueShouldQueue;

IlluminateBusQueueable 🎜>gunakan IlluminateQueueInteractsWithQueue;

gunakan IlluminateQueueSerializesModels;

kelas MyJob melaksanakan ShouldQueue
{


}


use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

public $timeout = 10; // 设置超时时间为 10 秒

public function handle()
{
    // 任务执行代码
}
>Berhati-hati apabila menggunakan tugasan tertunda Anda tidak boleh menggunakan kaedah padam Baris untuk memadamkan tugasan. Oleh kerana ID tugasan tertunda dijana berdasarkan cap masa, apabila anda memadamkan tugasan dan kemudian menambah operasi tertunda baharu pada tugasan yang sama, ID akan berubah, yang bersamaan dengan menambah tugasan baharu.

Semua tugas harus menetapkan tamat masa, jika tidak, masalah prestasi mungkin berlaku disebabkan pelaksanaan tugas mengambil masa terlalu lama.

Apabila pengecualian dilemparkan untuk membatalkan tugas, beri perhatian kepada kandungan pengecualian untuk mengelakkan kebocoran terlalu banyak maklumat apabila ralat berlaku dalam pemproses tugas.
  1. Apabila menggunakan mana-mana kaedah di atas untuk membatalkan tugas baris gilir, log peristiwa hendaklah direkodkan dalam acara batal untuk penyelenggaraan dan penyahpepijatan akan datang.
  2. Artikel ini memperkenalkan beberapa kaedah dan langkah berjaga-jaga untuk membatalkan tugas baris gilir dalam Laravel. Apabila kita tidak mahu tugasan dilaksanakan, kita boleh menggunakan kaedah di atas untuk membatalkannya. Pada masa yang sama, kita mesti memilih kaedah yang sesuai untuk membatalkan tugas berdasarkan keperluan dan keadaan sebenar untuk memastikan kestabilan dan prestasi sistem.

Atas ialah kandungan terperinci Beberapa cara untuk membatalkan tugas baris gilir dalam Laravel. 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