Laravel 8 Duplicate Job Hatası ve Çözümleri – Ens Soft

Laravel 8 projelerinde duplicate job hatası ve Observer ile Google Indexing çakışmalarını önleme yöntemleri. Queue ve sitemap çözümleri.

Admin
30.08.2025
Laravel
3 dakika
Laravel 8 Duplicate Job Hatası ve Çözümleri – Ens Soft

Laravel 8’de Duplicate Job ve Observer Çakışmaları

Laravel 8 projelerinde Job Queue’lar, Observer’lar ve dış API entegrasyonları sıkça kullanılır. Ama bazı senaryolarda aynı job birden fazla kez tetiklenebilir ve bu durum Google Indexing API, sitemap güncellemeleri veya diğer webhook işlemlerinde çakışmalara yol açabilir. Çoğu rehber bu senaryoya değinmez, ama büyük projelerde ciddi performans ve indeksleme sorunlarına sebep olur.


Hata Senaryosu

Bir PostObserver’da yeni yazı oluşturulduğunda:

  1. Sitemap güncelleniyor.

  2. Google’a sitemap ping gönderiliyor.

  3. Google Indexing API’ye URL gönderiliyor.

Eğer aynı anda birden fazla event tetiklenirse veya job queue düzgün yapılandırılmamışsa, duplicate job oluşur ve aynı URL API’ye tekrar tekrar gönderilir. Bu durum:

Google Indexing API hatası: Quota exceeded

veya

Observer loglarında aynı post için birden fazla “Indexing API başarılı” mesajı

şeklinde kendini gösterir.


Çözüm: Singleton Job ve Debounce Mantığı

Laravel Job’larında unique identifiers kullanmak ve job’ları debounce etmek çözümün anahtarıdır.

Örnek Singleton Job

<?php

namespace App\Jobs;

use App\Services\GoogleIndexingService;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;

class SubmitPostToGoogle implements ShouldQueue
{
    use InteractsWithQueue, Queueable, SerializesModels;

    protected $postUrl;

    public function __construct($postUrl)
    {
        $this->postUrl = $postUrl;
    }

    public function handle(GoogleIndexingService $indexingService)
    {
        // Job duplicate ise atla
        if (cache()->has('submitted_'.$this->postUrl)) {
            return;
        }

        $indexingService->submitUrl($this->postUrl);
        cache()->put('submitted_'.$this->postUrl, true, now()->addMinutes(10));
    }
}

Observer’da Kullanım

public function created(Post $post)
{
    if ($post->isPublishable()) {
        SubmitPostToGoogle::dispatch($post->getUrl());
    }
}

Bu sayede aynı post için aynı anda birden fazla indexing job’ı gitmez, Google API ve sitemap güncellemeleri çakışmaz.


Ekstra İpuçları

  • Queue’da retry ve delay kullanarak spam tetiklemeleri önleyin.

  • Sitemap güncellemelerini job ile asenkron yapın.

  • Logları debounce mantığı ile filtreleyin; böylece aynı post için tekrar eden loglar oluşmaz.

  • Google Indexing API için rate limit’i göz önünde bulundurun.

Laravel 8’de duplicate job ve observer çakışmaları, özellikle indexing ve sitemap işlemlerinde gözden kaçan ama kritik bir hatadır. Singleton job ve debounce mantığı ile hem performans kazanır hem de API hatalarını önlersiniz.

Etiketler

Laravel 8 duplicate job queue observer Google Indexing API sitemap hatalar çözüm web geliştirme job çakışması PHP
ENS Soft Profil Fotoğrafı

ENS Soft Sosyal Medya Ekibi

Social Media Team

ENS Soft Social Media Account. Genel Merkez Üzerinden Yönetilmektedir.

Benzer Yazılar