Merhaba,
$order->LockKey = $this->clearLockKey($this->options[Options::cacheKey], $order->ID);
try {
$lock = Cache::lock($order->LockKey, $this->optionsExtra[OptionsExtra::cacheLockTime]);
if ($lock->block(10)) {
$order->Owner = $lock->owner();
$job = (new ($this->optionsExtra[OptionsExtra::jobClass])(
$order,
$this->options))
->onQueue($this->options[Options::onQueueName]);
$jobID = app(Dispatcher::class)->dispatch($job);
}
} catch (\Exception $e) {
Log::critical('Kilit alma hatası: ' . get_class($this) .
' Hata: ' . $e->getMessage());
}
Önceden$lock->get()
olarak dataları if'de kontrol ediyordum. Sonradan block kullanmaya başladım. Ama anlamadığım bir nokta var. Belirtilen miktarda saniye boyunca bunu dener diyor. Her saniye belirttiğim saniye boyunca yani bu hesaba göre 10 kere deneme mi yapacak demek oluyor ? Bu block kısmını tam anlayamadım.
Ayrıca LockTimeoutException hatasını da dinledim. Her 10 saniyede bir hata basıyor. Her sipariş kaydı da farklı farklı deneme sayılarına sahip. 5-6-7-8-9 denemeler görüyorum.
Cache::lock aşamasında çok takılmalar yaşıyorum.
my.cnf değerlerimi şu şekilde ayarladım aslında:
max_connections = 750
connect_timeout = 5
wait_timeout = 600
interactive_timeout = 600
innodb_buffer_pool_size = 1024M
max_allowed_packet = 16M
thread_cache_size = 128
sort_buffer_size = 4M
bulk_insert_buffer_size = 16M
Laravel'in söylediği config/database.php ayarlarıma 'after_commit' => true
değerini de ekledim.
Bu takılmalarda killall -u username atmadan sorun düzelmiyor. Tam olarak neyi düzeltmem lazım ? Yol gösterebilecek varsa sevinirim.