sorgularını optimize etmeyi deniyebilirsin misal foreach içerisinde sorgu kullanılmaz zor da kalmadıkca ya da daha iyisi için performans ve stabillik adına foreachde dataset'ini array'de toplayıp sonra arraydeki veriyi o şekilde insert yada update delete edersin hatta bu aşamada bile array'de çok fazla veri tutuluyorsa array chunk ile parçalayıp o şekilde dataset'ini tekrar 3000 5000 gibi parçalar halinde toplu şekilde DB işlemleri yapılabilir. Yani bunu ben uzun süredir yaptığım performans iyileştirmeleri olsun sunucu kaynak tüketimi olsun process'in süresinin azalması gibi birçok testlerimde gözlemliyorum ve daha iyi şekile getirmek için kodu yazdığım süre kadar neredeyse iyileştirme ve stabillik adınada çalışmalar yapıyorum. Bu zaten öyle 3k 5k 10k veride bişey farkettirmez 50k ve üzeri veride toplu işlemler yaptırmak istersen burada işte sunucunun performansını kaynaklarını sömürmeye başlıyor iki seçenek oluyor ya sunucuyu güçlendircen ya kodunu optimize edicen maliyettense koddaki sorguları yada tekrar eden verilerde cache kullanarak sunucu tarafında daha az kaynak tüketerek güçlü işlemler yapabilirsin. Ama önceliğin kod bloğundaki sorgularını işlem sıralarını verilerini iyi gözlemleyip bir iyileştirme planı yapman gerek gerekirse işlem başlangıç ve bitişlerine LOG ile time ekleyip her işlemin ne kadar sürdüğünü süresi fazla geliyorsa o işleme yoğunlaşarak onun iyileştirmesini yapabilirsin. Ayrıca PHP asenkron çalışmaz yani kod bloğundaki kod sırasına göre işlem yapar eğer arada kaynayan gerçekleşmemiş bir kod var diyorsan o function'a giden eksik veri vardır çünkü PHP'de bu mümkün olmaz ben bu satırı es geçeyim diğerine atlıyayım yok sırasıyla yapar bir işlem biter diğerine geçer işlemler sırasında bir eksiklik varsa verilerde yada işlem sırasında yanlışlık vardır saygılar