Laravel ortamında arka planda çalışan işlerin izlenmesi, birçok geliştirici için her zaman bir zorluk olmuştur. Laravel Horizon, Redis ile harika çalışsa da, veritabanı, SQS veya diğer sürücüleri kullanan birçok geliştirici kendilerini gözlem yapacak araçlardan yoksun bulmaktadır. Horizon ile bile, belirli işler için detaylı bir yürütme geçmişi ve gerçek zamanlı ilerleme almak her zaman kolay olmayabiliyor.
Bu nedenle kendim tarafından geliştirilen ilk Laravel paketimi tanıtmak istiyorum: Laravel Job Monitor.
Bu paketi, neredeyse hiç yapılandırma olmadan, sıradan bir yol ile kuyruk işlerini izlemek, takip etmek ve yönetmek üzere inşa ettim.
Laravel Job Monitor Nedir?
Laravel Job Monitor Nedir?
laravel-job-monitor, sisteminize giren her işi takip etmek için Laravel’in kuyruk sistemine otomatik olarak bağlanan hafif bir pakettir. İster işleniyor, ister tamamlanmış ister başarısız olsun, buradan aldığınız tam bir denetim kaydıyla çalışma süreleri, deneme sayıları ve detaylı hata günlüklerine erişim sağlar.
Ana Özellikler
Ana Özellikler
1. Otomatik “Zero-Touch” İzleme
1. Otomatik “Zero-Touch” İzleme
Bu paketin güzelliği, mevcut işlerinizde herhangi bir kod değişikliği gerektirmemesidir. Yükleme yapıldığında, standart kuyruk olaylarını dinlemeye başlar ve tarih kaydını hemen başlatır.
2. Gerçek Zamanlı İlerleme İzleme
2. Gerçek Zamanlı İlerleme İzleme
Uzun süren işleriniz var mı, örneğin bir video dışa aktarma veya büyük bir veri içe aktarma? Artık basit bir trait kullanarak 0’dan 100’e kadar ilerlemeyi takip edebilirsiniz:
use JSandaruwan\LaravelJobMonitor\Traits\TracksJobProgress;
class MassiveImportJob implements ShouldQueue
{
use TracksJobProgress;
public function handle()
{
$this->updateProgress(10); // %10 tamamlandı
// ... yoğun işlem ...
$this->updateProgress(90); // %90 tamamlandı
}
}
3. Yerleşik REST API
3. Yerleşik REST API
Bu paketin kalbinde entegrasyon yer alıyor. Kendi panonuzu oluşturmak veya mevcut yönetim panelinize iş durumunu entegre etmek için kolayca yapılandırılabilir önceden tanımlı API uç noktaları ile birlikte gelir.
-
GET /api/job-monitor/jobs– İleri seviye filtreleme (durum, kuyruk, tarih vb.) ile listeleme -
GET /api/job-monitor/jobs/stats– Kuyruk sağlığınızın genel görünümü. -
POST /api/job-monitor/jobs/{id}/retry– Başarısız işler için tek tıklama ile yeniden deneme.
4. Sıfır Bağımlılık
4. Sıfır Bağımlılık
Vendor klasörünüzü hafif tutun! Paket, dış izleme hizmetleri veya ağır üçüncü taraf varlıklar gerektirmez. Tarih kaydını saklamak için mevcut veritabanınızı kullanır.
Neden Bunu Geliştirdim?
Neden Bunu Geliştirdim?
Pek çok projede, belirli bir arka plan işinin neden bu kadar uzun sürdüğünü veya belirli bir kullanıcı için neden başarısız olduğunu görmek için genellikle “activity_logs” veya “job_statuses” tablolarını elle oluşturmak zorunda kaldım. Tüm Laravel projelerimde standart bir yöntemle bunu ele almak istedim—umarım sizin için de faydalı olur!
Başlangıç
Başlangıç
Bugün Composer ile yükleyebilirsiniz:
composer require j-sandaruwan/laravel-job-monitor
Daha sonra yapılandırmayı yayımlayın ve göçleri çalıştırın:
php artisan vendor:publish --provider="JSandaruwan\LaravelJobMonitor\JobMonitorServiceProvider"
php artisan migrate
Ve bu kadar! Artık işleriniz izleniyor.
Sırada Ne Var?
Sırada Ne Var?
Bu sadece bir başlangıç. Şunları eklemeyi planlıyorum:
- Hazır, kullanılabilir bir Blade panosu.
- İş grupları için ilerleme desteği.
- Başarısız işler için özel bildirim tetikleyicileri (Slack/Discord).
Kaynağı GitHub’dan kontrol edin ve bir sorun veya PR açmaktan çekinmeyin. Eğer faydalı bulursanız, GitHub’da bir ⭐️ bırakmanız benim için çok şey ifade eder!
İyi kodlamalar! 🚀
Teşekkürler,
Janith Sandaruwan.
linkedin
Kaynak: Orijinal Makale


