Laravel, komut satırı araçlarını kullanarak çeşitli görevleri otomatikleştirmek için Artisan isimli bir komut satırı aracına sahiptir. Bu araç, Laravel uygulamanızda özel komutlar oluşturmanıza olanak tanır. Komutlar genellikle arka plan işlemlerini yürütmek veya belirli görevleri otomatik olarak yerine getirmek için kullanılır.
Laravel Komutu Oluşturma
Öncelikle, bir komut sınıfı oluşturmalısınız. Laravel, bu tür komutları oluşturmak için Artisan komutlarını sağlar.
Adım 1: Komut Sınıfını Oluşturma
Aşağıdaki Artisan komutunu kullanarak bir komut sınıfı oluşturabilirsiniz:
Bu komut, app/Console/Commands dizininde MyCustomCommand.php isimli bir dosya oluşturur.
Adım 2: Komut Sınıfını Düzenleme
Oluşturulan dosya içinde handle metodunu, komutunuzu çalıştıracak şekilde düzenleyebilirsiniz. İşte basit bir örnek:
namespace App\Console\Commands;
use Illuminate\Console\Command;
class MyCustomCommand extends Command
{
// Komut adı ve açıklaması
protected $signature = 'my:custom-command';
protected $description = 'Bu komut özel bir iş yapar';
public function __construct()
{
parent::__construct();
}
public function handle()
{
// Komut çalıştırıldığında yapılacak işlemler
$this->info('Komut başarıyla çalıştırıldı!');
return 0; //bunun olması gerekiyor
}
}
Daha Çok Göster
Komutu Zamanlanmış Görevler (Scheduler) ile Çalıştırma
Laravel Scheduler, belirli zamanlarda çalıştırmak için komutları ve işlemleri planlamanıza olanak tanır. Bu özellik, app/Console/Kernel.php dosyasında yapılandırılır.
Adım 1: Scheduler'ı Ayarlama
app/Console/Kernel.php dosyasını açın ve schedule metodunu düzenleyin. Bu metodun içinde, komutunuzu ne zaman çalıştırmak istediğinizi belirleyebilirsiniz.
protected function schedule(Schedule $schedule)
{
// Komutu her gün saat 3'te çalıştır
$schedule->command('my:custom-command')->dailyAt('03:00');
}
Adım 2: Cron Job Ayarlama
Scheduler'ı kullanabilmek için sunucunuzda bir cron job ayarı yapmanız gerekir. Bu, Laravel Scheduler'ın her dakika çalışmasını sağlar ve zamanlanmış görevlerinizi kontrol eder.
Cron job'ı eklemek için aşağıdaki komutu crontab dosyasına ekleyin:
Bu komut, her dakika schedule:run komutunu çalıştırır ve zamanlanmış görevlerinizi kontrol eder.
İpuçları
- Günlükleme: Komutlarınızda info, error gibi yöntemleri kullanarak çıktılarınızı günlüğe kaydedebilirsiniz.
- Hata Yönetimi: Komutlarınızda olası hataları yakalamak ve yönetmek için try-catch blokları kullanabilirsiniz.
- Performans: Uzun süren işlemleri arka planda çalışacak şekilde planlayarak uygulamanızın performansını artırabilirsiniz.
Örnek Senaryo
Diyelim ki her gün saat 2'de veritabanınızdaki kullanıcıları güncellemek istiyorsunuz. Bu durumda MyCustomCommand komutunuzu aşağıdaki gibi düzenleyebilirsiniz:
public function handle()
{
// Kullanıcıları güncellemek için iş mantığı
$users = User::where('status', 'inactive')->get();
foreach ($users as $user) {
$user->update(['status' => 'active']);
}
$this->info('Tüm kullanıcılar güncellendi.');
}
Bu komut, Kernel.php dosyasındaki schedule metodunda şöyle zamanlanır:
Laravel ile komutlar oluşturmak ve bu komutları Scheduler ile belirli saatlerde çalıştırmak, uygulamanızın otomatik görevlerini yönetmek için güçlü bir yöntemdir. Bu yaklaşım, rutin işlerinizi otomatikleştirmenize ve uygulamanızın verimliliğini artırmanıza yardımcı olabilir.