laravel

Laravel Kuyrukları Eğitimi

Laravel Kuyrukları Eğitimi
Laravel kuyruğu, Laravel çerçevesinin daha kullanışlı özelliklerinden biridir. Bu özellik, Laravel uygulamasının performansını ve verimliliğini artırmak için zaman alan görevleri beklemek ve görevleri daha sonra gerçekleştirmek için kullanılır. Bu özellik, arka uçlarda Amazon SQS, Redis, Beanstalk, eşzamanlı sürücü veya ilişkisel veritabanı gibi farklı türde kuyruklar sağlar. Kuyruğa alınmış işleri atmak için boş bir kuyruk sürücüsü kullanılır. Kuyruğun yapılandırma dosyası konumda saklanır yapılandırma/sıra.php. Laravel kuyruğunu kullanmanın yaygın bir örneği, e-posta göndermektir. Laraval uygulamasında çok sayıda e-posta ile uğraşmak gerektiğinde, işlemeyi hızlandırmak için Laravel kuyruklarını kullanmak daha iyidir. Bu öğretici, çok sayıda e-posta göndermek için Laravel kuyruklarının nasıl kullanılacağını gösterir.

Önkoşullar

Bu eğiticiye başlamadan önce, aşağıdaki görevleri tamamlayın:

  1. Yeni bir Laravel projesi kurun
  2. Veritabanı bağlantısını kurun
  3. E-postaları göndermek için yapılandırmayı ayarlayın (SMTP kullanarak e-posta göndermek için e-posta gönderme eğitimini kontrol edebilirsiniz)

Tablo Oluştur

oluşturmanız gerekir Meslekler tüm kuyrukları saklamak için veritabanındaki tablo. için geçiş dosyasını oluşturmak için terminalden aşağıdaki komutu çalıştırın Meslekler masa.

$ php esnaf kuyruğu:tablo

Taşıma dosyasını konumdan açabilirsiniz veritabanı/taşıma/. Dosya aşağıdaki içeriği içeriyor.

Illuminate\Database\Migrations\Migration'ı kullanın;
Illuminate\Database\Schema\Blueprint'i kullanın;
Illuminate\Support\Facades\Schema'yı kullanın;
class CreateJobsTable Taşımayı genişletiyor

/**
* Geçişleri çalıştırın.
*
* @dönüş geçersiz
*/
genel işlev yukarı()

Schema::create('işler', işlev (Blueprint $tablo)
$table->bigIncrements('id');
$table->string('queue')->index();
$table->longText('yük');
$table->unsignedTinyInteger('denemeler');
$table->unsignedInteger('reserved_at')->nullable();
$table->unsignedInteger('available_at');
$table->unsignedInteger('created_at');
);

/**
* Göçleri tersine çevir.
*
* @dönüş geçersiz
*/
genel işlev aşağı()

Şema::dropIfExists('işler');

oluşturmak için terminalden aşağıdaki komutu çalıştırın masa.

$ php esnaf göçü

Posta Sınıfı Oluştur

Laravel uygulamasından e-posta göndermek için postalanabilir bir sınıf oluşturmalısınız. Adlı posta sınıfını oluşturmak için aşağıdaki komutu çalıştırın Eposta gönder yerde uygulama/Posta.

$ php esnaf make:mail SendEmail

Bu sınıfın içeriği aşağıda gösterilmiştir. Kullanılan görünüm dosya adı inşa etmek() yöntem bu öğreticinin sonraki bölümünde oluşturulacak.

ad alanı Uygulama\Mail;
Illuminate\Bus\Queueable'ı kullanın;
Illuminate\Contracts\Queue\ShouldQueue'yu kullanın;
Illuminate\Mail\Mailable'ı kullanın;
Illuminate\Queue\SerializesModels'i kullanın;
class SendEmail, Mailable'ı genişletir

Queueable, SerializesModels kullanın;
/**
* Yeni bir mesaj örneği oluşturun.
*
* @dönüş geçersiz
*/
genel işlev __construct()

//

/**
* Mesajı oluşturun.
*
* @dönüş $ this
*/
genel işlev oluşturma()

/* E-posta şablonu için kullanılacak görünüm adını tanımlayın */
$this->view('email') döndür;

Görünüm Oluştur

adlı görünüm dosyasını oluşturun e-posta.bıçak ağzı.php e-posta gövdesi olarak gönderilecek aşağıdaki içerikle.

Linux İpucu'na hoş geldiniz


Laravel'i kolayca öğrenin

Bir İş Sınıfı Oluşturun

Bir iş sınıfı oluşturmak için aşağıdaki komutu çalıştırın. Adlandırılmış iş sınıfı dosya adı E-mail göndermek.php yerde oluşturulacak uygulama/İşler.

$ php artisan make:job GöndermeE-posta

içeriği E-mail göndermek.php aşağıda gösterilmiştir. içinde geçerli bir e-posta adresi ayarlamalısınız için() yöntemi üstesinden gelmek() kodun düzgün çalışıp çalışmadığını test etme işlevi. yerine geçerli e-posta adresini ayarlayın 'Alıcı E-posta Adresi' içinde için() kuyruğun düzgün çalışıp çalışmadığını kontrol etme yöntemi.

ad alanı Uygulama\İşler;
Illuminate\Bus\Queueable'ı kullanın;
Illuminate\Contracts\Queue\ShouldQueue'yu kullanın;
Illuminate\Foundation\Bus\Dispatchable'ı kullanın;
Illuminate\Queue\InteractsWithQueue kullanın;
Illuminate\Queue\SerializesModels'i kullanın;
/* Gerekli paketler eklendi */
Posta'yı kullanın;
App\Mail\SendEmail'i kullanın;
sınıfı SendingEmail, ShouldQueue'yu uygular

Dispatchable, InteractsWithQueue, Queueable, SerializesModels kullanın;
/**
* Yeni bir iş örneği oluşturun.
*
* @dönüş geçersiz
*/
genel işlev __construct()

//

/**
* İşi yürütmek.
*
* @dönüş geçersiz
*/
genel işlev tanıtıcısı()

/* Postalanabilir sınıfın nesnesini oluştur ve e-posta gönder */
$email = yeni SendEmail();
/* Geçerli bir e-posta adresi belirleyin */
Mail::to('Alıcı E-posta Adresi ')->send($email);

Denetleyici Oluştur

Kuyruğu işlemek üzere bir denetleyici oluşturmak için aşağıdaki komutu çalıştırın. Ne zaman koluKuyruk() denetleyicinin işlevi yürütülür, kuyruk işi gönderilir ve e-posta gönderilir.

$ php zanaatkar markası: kontrolör SendEmailController

SendEmailController.php

ad alanı App\Http\Controllers;
Illuminate\Http\Request'i kullanın;
/* Gerekli paketleri ekleyin */
Uygulama\İşler\SendingEmail'i kullanın;
Carbon\Carbon kullanın;
class SendEmailController, Controller'ı genişletir

/**
* Laravel Kuyruklarını Kullanmak
*/
genel işlev handleQueue()

/* Yeni işi iş kuyruğuna gönder */
sevk(yeni SendingEmail());
/* E-posta gönderdikten sonra mesajı yazdır */
echo 'E-posta Gönderildi';

Rota Ekle

ağ.php dosyadan rotalar klasörünü seçin ve denetleyiciyi kullanarak kuyruk işini yürütmek için aşağıdaki yolu ekleyin.

Route::get('email', '[email korumalı]');

Kodun çalışıp çalışmadığını kontrol etmek için tarayıcıda aşağıdaki URL'yi çalıştırın. Yeni bir e-postanın alınıp alınmadığını kontrol etmek için alıcı e-posta adresini açın.

http://localhost:8000/emailqueue

Gecikme Ekle

E-mail göndermek.php yeniden dosyalayın ve içeriğini değiştirin koluKuyruk() kuyruk işlerine beş saniyelik gecikme ekleme işlevi.

ad alanı App\Http\Controllers;
Illuminate\Http\Request'i kullanın;
/* Gerekli paketleri ekleyin */
Uygulama\İşler\SendingEmail'i kullanın;
Carbon\Carbon kullanın;
class SendEmailController, Controller'ı genişletir

/**
* Laravel Kuyruklarını Kullanmak
*/
genel işlev handleQueue()

/* 5 saniye gecikmeli yeni bir kuyruk nesnesi yarat */
$emailJob = (new SendingEmail())->delay(Carbon::now()->addSeconds(5));
/* Yeni işi iş kuyruğuna gönder */
gönder($emailJob);
/* E-posta gönderdikten sonra mesajı yazdır */
echo 'E-posta beş saniye sonra gönderildi';

Yine, kodun çalışıp çalışmadığını kontrol etmek için tarayıcıda aşağıdaki URL'yi çalıştırın. Burada e-posta, beş saniyelik delay() yöntemi kullanılarak beş saniye sonra gönderilecektir.

http://localhost:8000/emailqueue

5 saniye sonra yeni bir e-posta alınıp alınmadığını öğrenmek için alıcı e-posta adresinin gelen kutusunu kontrol edin. Sıra işi düzgün çalışıyorsa aşağıdaki içeriğe sahip bir e-posta alınacaktır.

Sonuç

Bu eğitim, Laravel kuyruğunun çok basit kullanımını gösterir. Laravel kuyruklarını uygulama gereksinimlerinize göre çeşitli amaçlar için kullanabilirsiniz. Umarım bu eğitim, okuyucuların Laravel kuyruklarının temel kavramlarını daha iyi anlamalarına yardımcı olmuştur.

Linux Oyuncuları için Faydalı Araçlar
Linux'ta oyun oynamayı seviyorsanız, oyun deneyimini geliştirmek için Wine, Lutris ve OBS Studio gibi uygulamaları ve yardımcı programları kullanmış o...
Daha Önce Bir Linux Sürümü Olmayan Linux için HD Remastered Oyunlar
Birçok oyun geliştiricisi ve yayıncısı, franchise'ın ömrünü uzatmak için eski oyunların HD remaster'ı ile geliyor, lütfen modern donanımla uyumluluk i...
Linux Oyunlarını Otomatikleştirmek için AutoKey Nasıl Kullanılır?
AutoKey, Linux ve X11 için Python 3, GTK ve Qt'de programlanmış bir masaüstü otomasyon aracıdır. Komut dosyası oluşturma ve MAKRO işlevselliğini kulla...