Zamanlanmış Görevler
Zamanlanmış görevleri listeleyen, açıp kapatan ve elle çalıştıran dört uç.
Genel Bakış
Zamanlanmış görev, kurulumun kendiliğinden yaptığı işlerin tanımıdır: fatura kesmek, hizmet askıya almak, bildirim göndermek. Bu dört uç görevleri listeler, işlerini gösterir, açıp kapatır ve elle çalıştırır.
Görev ile iş aynı şey değildir. Görev bir kuraldır; her koşusunda kuyruğa bir ya da daha çok iş bırakır. Görev listesindeki sayılar da o kuralın kuyruktaki işlerini anlatır.
Bazı görevler iki aşamalı çalışır: önce ne yapılacağını bulan bir aşama, sonra bulunanları yürüten bir aşama. Sayımlar ve süzgeçler bu ayrımı gözetir.
Referans
Görevleri Listeleme
Kurulumdaki bütün zamanlanmış görevleri durumlarıyla döndürür.
minute, hour, day, month, unknown.curl 'https://panel.ornek.com/api/v1/admin/automation/tasks' \
-H "Authorization: Bearer $API_KEY"const res = await fetch('https://panel.ornek.com/api/v1/admin/automation/tasks', {
headers: { Authorization: `Bearer ${apiKey}` },
});
const { data } = await res.json();
const broken = data.filter((t) => ! t.registered);$ch = curl_init('https://panel.ornek.com/api/v1/admin/automation/tasks');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . $apiKey],
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// KAPALI ile ISLEYICISI YOK ayri seylerdir: ikincisi bir kurulum eksigidir.
$tasks = Api::Automation()->GetAutomationTasks()['data'];
$broken = array_filter($tasks, fn ($t) => ! $t['registered']);Görevin İşlerini Listeleme
Tek bir göreve ait kuyruk işlerini döndürür.
curl 'https://panel.ornek.com/api/v1/admin/automation/tasks/invoice-create/jobs?limit=50' \
-H "Authorization: Bearer $API_KEY"const url = new URL(`https://panel.ornek.com/api/v1/admin/automation/tasks/${task}/jobs`);
url.searchParams.set('limit', '50');
const res = await fetch(url, {
headers: { Authorization: `Bearer ${apiKey}` },
});
const { data } = await res.json();
// Sonraki sayfa: url.searchParams.set('after_id', data.next_after)$ch = curl_init('https://panel.ornek.com/api/v1/admin/automation/tasks/' . $task . '/jobs?' . http_build_query(['limit' => 50]));
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . $apiKey],
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Bu uc ILERI dogru gezer; genel besleme ise geriye. Ikisini karistirmayin.
$page = Api::Automation()->GetAutomationTaskJobs(['task' => $task], ['limit' => 50])['data'];
$next = Api::Automation()->GetAutomationTaskJobs(['task' => $task], [
'after_id' => $page['next_after'],
]);Görevi Açma ve Kapatma
Bir görevin çalışıp çalışmayacağını belirler.
curl -X PUT 'https://panel.ornek.com/api/v1/admin/automation/tasks/invoice-create/status' \
-H "Authorization: Bearer $API_KEY" \
-H 'Content-Type: application/json' \
-d '{"enabled":0}'const res = await fetch(`https://panel.ornek.com/api/v1/admin/automation/tasks/${task}/status`, {
method: 'PUT',
headers: {
Authorization: `Bearer ${apiKey}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({ enabled: 0 }),
});
const body = await res.json();$ch = curl_init('https://panel.ornek.com/api/v1/admin/automation/tasks/' . $task . '/status');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'PUT',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . $apiKey,
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode(['enabled' => 0]),
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Kapatmak KUYRUKTAKI isleri silmez: bekleyenler gorev acilinca yeniden alinir.
Api::Automation()->UpdateAutomationTaskStatus(['task' => $task, 'enabled' => 0]);Görevi Hemen Çalıştırma
Görevi zamanını beklemeden kuyruğa alır.
curl -X POST 'https://panel.ornek.com/api/v1/admin/automation/tasks/invoice-create/run' \
-H "Authorization: Bearer $API_KEY"const res = await fetch(`https://panel.ornek.com/api/v1/admin/automation/tasks/${task}/run`, {
method: 'POST',
headers: { Authorization: `Bearer ${apiKey}` },
});
const { data } = await res.json();
console.log(data.job_id);$ch = curl_init('https://panel.ornek.com/api/v1/admin/automation/tasks/' . $task . '/run');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . $apiKey],
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Cagri KUYRUGA ATAR, calistirmaz; sonucu is numarasindan takip edin.
$jobId = Api::Automation()->RunAutomationTask(['task' => $task])['data']['job_id'];
$job = Api::Automation()->GetAutomationJob(['queue' => 'cron', 'id' => $jobId])['data'];Tuzaklar
Bir görev kapatılmış olabilir ya da onu yürütecek bir işleyicisi hiç olmayabilir. İkincisi bir tercih değil, kurulumdaki bir eksiktir: görev listede durur, hiç çalışmaz ve elle çalıştırma çağrısı da hata verir. İzleme yazarken iki alanı ayrı okuyun.
Çalıştırma ucu görevi kuyruğa atar; işi yapan zamanlanmış işçidir. Yanıt geri geldiğinde iş henüz başlamamış olabilir, dolayısıyla sonucu ölçmek için dönen iş numarasını takip etmeniz gerekir. İşçi ölmüşse iş hiç alınmaz ve sessizce bekler.
Görevin işleri ucu ileriye doğru sayfalar: verdiğiniz numaradan sonrakileri getirir. Genel iş beslemesi ise geriye doğru gider. İki ucu aynı döngüde kullanan bir kod, imleç alanlarını karıştırırsa ya hiç ilerlemez ya da aynı sayfayı döndürür.
Görevi kapatmak yeni iş bırakmasını durdurur; kuyrukta bekleyen işleri silmez. Görevi yeniden açtığınızda o eski işler de alınır ve beklenmedik bir anda çalışır. Uzun süre kapalı kalacak bir görevde bekleyenleri ayrıca iptal etmeyi düşünün.
Görev listesindeki tamamlanan sayısı bugünü, düşen sayısı ise kayıtların saklandığı tüm süreyi kapsar. İkisini yan yana koyup bir başarı oranı hesaplamak yanlış çıkar. Aynı pencereye ait sayılar istiyorsanız görevin işlerini durum süzgeciyle kendiniz sayın.
İlgili Makaleler
Geri bildiriminiz için teşekkürler!
Yukarıda bulamadığınız her şey için destek ekibimiz her zaman yanınızda.