Görev Yönetimi Kancaları

1.6k görüntülenme Markdown

Operatörün zamanlanmış görevlere elle müdahale ettiği sekiz kanca: elle çalıştırma, açıp kapatma, kuyruk temizliği ve acil durdurma.

Genel Bakış

Önceki makaledeki kancaların aksine bunlar panelden başlar: karşıda bir operatör vardır ve mesajınızı okur.

İkisi özellikle ağırdır. Acil durdurma bütün otomasyonu kapatır; kuyruk temizliği ise geçmişi siler ve neyin ne zaman koştuğunu bir daha göremezsiniz.

Referans

Elle çalıştırmayı izleme

actioncron.task_run_now
AdminAutomation iş kuyruğa girdi

Operatör bir görevi elle tetikledikten sonra çalışır. Görev bu noktada kuyruğa girmiştir, henüz koşmamıştır.

Parametreler 2
$taskstringTetiklenen görevin adı.
$job_idintKuyruğa atılan işin kimliği. İşin sonucu için kuyruk kancasını dinleyin; bu kanca yalnız sıraya girdiğini söyler.
Dönüş 1
voidDönüş yoksayılır.
Dinleyici
Hook::add('action:cron.task_run_now', 10, function ($task, $job_id) {
    // Is KUYRUGA girdi, henuz kosmadi: sonuc icin job.processed kancasina bakin.
    Audit::manualRun($task, (int) $job_id);
});

Görevin açılıp kapanmasını izleme

actioncron.task_status_changed
AdminAutomation tek görev

Tek bir görev etkinleştirilip pasifleştirildikten sonra çalışır.

Parametreler 2
$taskstringDurumu değişen görevin adı.
$enabledboolYeni durum. Kapatılan görev sessizce durur: kimse fark etmeyebilir.
Dönüş 1
voidDönüş yoksayılır.
Dinleyici
Hook::add('action:cron.task_status_changed', 10, function ($task, $enabled) {
    // Kapatilan gorev sessizce durur: kritik olanlari kayda gecirin.
    if (!$enabled && Acme::criticalTask($task)) Ops::alert('task-off', $task);
});

Acil durdurmayı engelleme

gatecron.kill_switch_disable
AdminAutomation her şeyi durdurur

Bütün otomasyon kapatılmadan önce çalışır. Bu kanca yalnız kapatma yönünde çalışır.

Parametreler 2
$enabledboolHedef durum. Bu kancada her zaman yanlıştır: yalnız kapatmada çalışır, açmada değil.
$pending_countintŞu an bekleyen iş sayısı. Yüksekse kapatmak birikmiş işleri bekletir; karar verirken buna bakın.
Dönüş 1
stringBoş olmayan bir string işlemi durdurur; metin operatöre hata olarak gösterilir.
Dinleyici
Hook::add('gate:cron.kill_switch_disable', 10, function ($enabled, $pending_count) {
    // Bekleyen is cok iken kapatmak birikmeyi buyutur.
    if ($pending_count > 500)
        return 'Bekleyen is sayisi yuksek; once kuyrugun bosalmasini bekleyin.';

    return null;
});

Kuyruk temizliğini durdurma

gatecron.cleanup_run
AdminAutomation geçmişi siler

Kuyruk geçmişi silinmeden önce çalışır. Saklama süreleri duruma göre ayrıdır.

Parametreler 3
$completed_daysintTamamlanan işlerin saklama günü.
$cancelled_daysintİptal edilen işlerin saklama günü.
$failed_daysintBaşarısız işlerin saklama günü. Bu değeri düşük tutmak, sorunun kanıtını silmek demektir.
Dönüş 1
stringBoş olmayan bir string işlemi durdurur; metin operatöre hata olarak gösterilir.
Dinleyici
Hook::add('gate:cron.cleanup_run', 10,
    function ($completed_days, $cancelled_days, $failed_days) {
        // Basarisiz isleri erken silmek sorunun kanitini yok eder.
        if ($failed_days < 30) return 'Basarisiz kayitlar en az 30 gun saklanmalidir.';

        return null;
    });

Temizliğin sonucunu izleme

actioncron.queue_cleaned
AdminAutomation duruma göre dağılım

Kuyruk temizliği bittikten sonra çalışır.

Parametreler 2
$deletedintSilinen toplam kayıt.
$breakdownarrayDuruma göre dağılım: tamamlanan, iptal edilen, başarısız. Başarısız sayısı yüksekse silinen şey bir sorunun izidir.
Dönüş 1
voidDönüş yoksayılır.
Dinleyici
Hook::add('action:cron.queue_cleaned', 10, function ($deleted, $breakdown) {
    // Silinen basarisiz kayit cok ise bir sorunun izi gitmis demektir.
    if ((int) ($breakdown['failed'] ?? 0) > 100)
        Ops::warn('cron-failures-purged', (int) $breakdown['failed']);
});

İşe müdahaleyi izleme

actioncron.job_intervened
AdminAutomation dört ayrı işlem

Operatör kuyruktaki bir işe elle müdahale ettikten sonra çalışır.

Parametreler 3
$actionstringMüdahale türü: retry, cancel, force_reclaim, delete. Dördü çok farklı şeydir; türü okumadan tepki vermeyin.
$queuestringKuyruk anahtarı: cron, module, notification. Üç ayrı kuyruk vardır; hepsi bu kancadan geçer.
$idintMüdahale edilen işin kimliği.
Dönüş 1
voidDönüş yoksayılır.
Dinleyici
Hook::add('action:cron.job_intervened', 10, function ($action, $queue, $id) {
    // force_reclaim, takilmis bir isi geri alir: bu tekrar calismasi demektir.
    if ($action === 'force_reclaim') Ops::note('job-reclaimed', $queue, (int) $id);
});

Kesinti sonrası dönüşü yakalama

actioncron.restore.detected
cron.php uzun boşluk

Sistem, görevlerin uzun süre koşmadığını fark ettiğinde çalışır.

Parametreler 2
$restoreInfoarrayKesinti bilgisi: gap_hours, gap_seconds, last_seen. Boşluk uzunsa bu süredeki yenilemeler, askıya almalar ve faturalar gecikmiş demektir.
$workerIdstringTespiti yapan işçinin kimliği.
Dönüş 1
voidDönüş yoksayılır.
Dinleyici
Hook::add('action:cron.restore.detected', 10, function ($restoreInfo, $workerId) {
    // Bosluk boyunca yenileme ve askiya alma gecikti: birikmeyi kontrol edin.
    Ops::alert('cron-gap', (float) ($restoreInfo['gap_hours'] ?? 0));
});

Görev listesini değiştirme

filtercron.task_overview
AdminAutomation panel kartları

Görev özeti panelde gösterilmeden önce çalışır.

Parametreler 1
$tasksarrayrefGörev kartı satırları. Kendi görevinizi buraya eklemek onu listede gösterir, ama çalıştırmaz: çalıştırmak için kayıt kancasını kullanın.
Dönüş 1
voidDeğer referansla değişir; dönüş kullanılmaz.
Dinleyici
Hook::add('filter:cron.task_overview', 10, function (&$tasks) {
    // Listeye eklemek gorevi CALISTIRMAZ; kayit register:cronjobs ile yapilir.
    $tasks = array_filter($tasks, fn ($t) => !Acme::hidden($t['key'] ?? ''));
});

Tuzaklar

Elle çalıştırmak koşturmak değildir

Elle başlatma kancası size kuyruk kimliği verir: iş sıraya girmiştir, henüz koşmamıştır. Sonucu burada beklemek boşunadır; işin gerçekten ne yaptığını işlendi kancası söyler.

Temizlik geçmişi geri gelmez

Kuyruk temizliği başarısız kayıtları da siler ve o kayıtlar bir sorunun tek izidir. Saklama sürelerini kısaltmak, ertesi gün "neden çalışmamış?" sorusunu cevapsız bırakır. Kapıda başarısız kayıtların süresini koruyun.

Müdahale kancası dört farklı işi taşır

Yeniden deneme, iptal, geri alma ve silme aynı kancadan geçer ve sonuçları taban tabana zıttır. Türü okumadan yazılan bir dinleyici, iptal edilen bir işi yeniden başlatılmış sanabilir. Ayrıca üç ayrı kuyruk vardır; ikinci parametre hangisinde olduğunuzu söyler.

Listeye eklemek görevi çalıştırmaz

Görev listesi filtresi yalnız panelde görüneni değiştirir. Kendi göreviniz oraya eklendiği için çalışmaz; çalışması için kayıt kancasıyla tanıtılması gerekir. İkisini karıştırmak, panelde duran ama hiç koşmayan bir kart bırakır.

Faydalı oldu mu?

Geri bildiriminiz için teşekkürler!

Hâlâ Yardıma mı İhtiyacınız Var?

Yukarıda bulamadığınız her şey için destek ekibimiz her zaman yanınızda.