Async foreach loop
Merhaba, API tarafında aşağıda bulunan parça ile ürün durumu kontrol ediyorum.Ancak ürün listelemesi artınca bu işlemde hayli geç cevap döndürmekte.Senkronizasyon olarak ilk işlem bitmeden istek gönderemiyorum apiye. Bu konuda yardımınıza ihtiyacım var. Teşekkürler ..
$productList = array();
$productIdList = array();
$menuList = $getir->menuList();
foreach ($menuList["response"] as $keys) {
foreach ($keys["menuSubCategories"] as $product) {
foreach ($product["menuProducts"] as $val) {
if ($val["status"] == 200 || $val["status"] == "200") {
array_push($productList, $val);
}
}
}
}
foreach ($productList as $keys) {
$array = [
"id" => $keys["id"],
"status" => $keys["status"],
"price" => $keys["price"]
];
array_push($productIdList, $array);
}
$productRowCount = false;
foreach ($productIdList as $prod) {
if ($prod["price"] == $Description["price"]) {
$pro = $getir->getMenuProduct($prod["id"]);
foreach ($pro["response"]["barcodes"] as $productBarcode) {
if ($productBarcode == $barcode) {
$productRowCount = true;
if ($Json["status"] == "true") {
$status = 100;
$statusMessage = "Ürün başarıyla satışa açıldı!";
} else {
$status = 200;
$statusMessage = "Ürün başarıyla satışa kapatıldı!";
}
$array =
[
'status' => $status
];
}
}
}
}
if ($productRowCount == false) {
$JSON = [
"status" => "warning",
"message" => "Ürün onay bekliyor!"
];
}
array_push($productList, $val);
yukarıdaki kullanımı aşağıdakiyle değiştirmeni tavsiye ederim.
$productList[] = $val;
$productList zaten boş bir array, push kullanarak ekstradan method döndürüyorsun hemde dizi boyunca, gerek yok. bu kullanım aynı sonucu daha az performans harcayarak verir. en azından ben öyle düşünüyorum. ayrıca tekrar dönüp kodlara bakınca, ikinci döngüde ilk aldığın döngüden yeni bir döngü türetip değer atadığını gördüm. verimsiz bir kullanım. bunu iyice düşünüp ilk döngüde hallet. ikinci döngüyü sil ve yukarıdaki verdiğim örnek ile ilk döngüde atama yap, indis sayıları zaten eşit. muhtemelen ikinci döngüyü ortadan kaldırıp aynı sonucu ilk döngüde hallettiğinde, diğerleri içinde iyileştirmeler yapabilecek yeni bir bakış açısı edinebilirsin..
$productList[] = $val;
$productIdList[] = [
"id" => $val["id"],
"status" => $val["status"],
"price" => $val["price"]
];
nereden ne değer geliyor benim için belli değil ama, ikinci döngüyü ilk döngüden türettiğin için bunun çalışması gerektiğini sanıyorum.
bu ilk iki döngüden sonraki döngüler içerisinde ise çok fazla koşul ve iç içe döngü mevcut. eğer mümkünse koşula uymayan dizileri döngüye sokmadan önce çıkart ve koşul yazmaktan kurtul.