Tekrardan merhabalar,
Bir üstte bahsettiğim gibi şu anda uygulamamı çalıştırıyorum ve tam istediğim gibi bir şekilde sorunsuz olarak çalışmakta. yardımlarınız için teşekkürler. Bir koşulun olması durumunda istemediğim bir sorun oluşuyor.
-- Apiye gönderilen işlemin durumunu sorgulamak için bir kuyruk işlemi ekleyerek, dönen durumun neticesinde ilgili kullanıcının mevcut bakiyesinde işlemleri DB::transaction ile yapmaktayım.
-- Bir işlemin durumunu sorgulamak için aynı anda ( bir döngü ile ) birden fazla iş eklediğimde, kuyruk işlemleri aynı anda çalıştığında, transaction işlemin başlamadan önce kontrol ettiğim bir alan (on_queue) olmasına rağmen, kuyruk işlemi çalışıyor ve aynı anda kullanıcın bakiyesinde iş sayısı kadar (ekleme/çıkarma ) durumu oluşuyor.
-- Böyle bir durum söz konusu olabilir mi bilmiyorum. Sadece önlem almaya çalışıyorum.
-- Supervisor ile kuyruk işlemlerini çalıştıyorum. Olurda bir hata durumunda işler birikirse, daha sonra çalıştığında biriken işleri aynı anda çalıştırmayı deneme ihtimalinide göz ardı etmek istemiyorum.
Sorgulama işine ait kod bu şekilde ;
if ($this->product_order->on_queue) return;
$this->product_order->update(['on_queue' => true]);
\DB::beginTransaction();
try {
if ($result['result'] == 1) { //Yüklendi
//sipariş durumu güncelle işlemi
} elseif ($result['result'] == 2) { // Beklemede
// İŞi tekrardan kuyruğa ekle
} elseif ($result['result'] == 3) { //Başarısız
//Bakiyeyi iade et.
}
\DB::commit();
} catch (Exception $e) {
\DB::rollBack();
}
Nasıl bir çözüm önerirsiniz? Teşekkürler.İyi çalışmalar.