Yaptığı testlerde xml 'i okumanın timeout hatasına sebep vermediği veritabanı kayıt işlemlerinin buna neden olduğunu tespit ettim. XML 'den verilerin okunması 1 saniyenin altında sürüyor ancak veritabanına kayıt uzun sürüyor.
bunu aşabilmek için transaksiyon fonksyionu kullanarak güncellemeleri toplu yaptım ancak genede çözüm olmadı.
Sorunumu çözebildim, araştırmalarım nihayetinde woocommerce'nin ana ürün ve varyant fiyatlarının wp_options tablosunda önbellekleme niteliğinde tuttuğunu ve buradaki satırın güncellenmesinin sadece ürünün panel üzerinden güncellenmesi ve yeni kayıt oluşturduğunda yapıldığını tespit ettim. Ben ise varyant stok ve fiyat bilgilerini entegrasyonum ile direkt veritabanı üzerinden değiştirdiğim için bu güncellemeyi yapmıyordu.
WooCommerce'de bulunan wc_delete_product_transients() fonksiyonu bu önbelleklemeyi güncelliyormuş. Buna istinaden aşağıdaki kod yardımıyla ürün stok ve fiyat bilgilerimi gncelledikten sonra fonksiyonu çağırıp sorunumu çözmüş oldum. Benzer sorun yaşayacaklar için kodu bıraya bırakmaktayım.
<?php
require_once('../wp-load.php');
$args = array(
'post_type' => 'product',
'post_status' => 'publish',
'posts_per_page' => -1,
'post_parent' => 0, // Sadece ana ürünleri almak için post_parent'ı 0 olarak ayarlayın
);
$products = get_posts( $args );
foreach ( $products as $product ) {
wc_delete_product_transients( $product->ID );
}
echo "Tüm ana ürünlerin fiyatları başarıyla güncellendi.";
?>
Cevabınız için teşekkür ederim.
$array = array(
"barcode"=>$trendyol_barcode1,
"quantity"=>$vStockAmount,
"salePrice"=>$trendyol_sale_price,
"listPrice"=>$trendyol_sale_price
);
$json = json_encode($array);
bu şekilde php tarafında json dosyası olarak encode ettim fakat "items"'i nasıl bu json içerisine dahil edeceğimi bilemiyorum.
foreach($cikti_json as $key => $value){
$orderNum=$value["orderNumber"];
echo $orderNum ."<br/>";
}
bu şekilde foreach ile tüm belirtilen etiketleri çekmede de başarılı olamadım ne yazik ki sorunum nerede anlayamadım.
efendim cevabını için teşekkür ederim ancak şöyle bir problem yaşamaktayım.
$cikti_json=json_decode($cikti);
echo "<pre>";
print_r($cikti_json);
bu şekilde kullandığımda sorunsuz ekrana tüm verileri yazdırıyorum ancak
$cikti_json=json_decode($cikti, true);
echo $cikti_json['shipmentAddress'];
bu şekilde diziyi çözüp yazdırmaya çalıştığımda herhangi bir çıktı alamıyorum, ne tür bir hata yapmaktayım acaba ?
Hep bilgi alıyoruz buradan sayenizde bu sefer çözmüş olduğum problem paylaşayım. Biraz curl ile ilgili araştırma yapıp mantığını öğrenince youtubedaki birkaç örnek sayesinde alt kısımdaki kod parçası ile sipariş paketlerini çekebildim. Araştıran arkadaşlara destek olabilmek amacıyla burada kalsın.
API dökümanındaki bilgiler ile tarih aralığı vb. şekilde siparişleri çekebilirsiniz.
<?php
$url = 'https://api.trendyol.com/sapigw/suppliers/SATICIID/orders';
$baglan=curl_init();
curl_setopt($baglan,CURLOPT_URL,$url);
curl_setopt($baglan,CURLOPT_RETURNTRANSFER,1);
curl_setopt($baglan,CURLOPT_USERPWD,"APIKEY:APISECRET");
$cikti=curl_exec($baglan);
curl_close($baglan);
$cikti_json=json_decode($cikti);
echo "<pre>";
print_r($cikti_json);
?>
Üstadım cevabınız için teşekkür ederim ancak burayı uyguladığımda hem hata aldım hem de buranın mantığını anlayamadım. Mantığı anlayarak ilerlemek istiyorum, eğer mümkünse olması gereken akışı özet geçebilmeniz mümkünse çok sevinirim.