Önkoşullar
Bu eğiticiye başlamadan önce, aşağıdaki görevleri tamamlayın:
- Yeni bir Laravel projesi kurun
- Veritabanı bağlantısını kurun
- 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:tabloTaşı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 iş 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 SendEmailBu 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-postaiç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 SendEmailControllerSendEmailController.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ç 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
Aç 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.