XML ile entegre iki ShopPHP sitesi arasında anlık stok güncellemesi yaptırabilir miyim?

XML ile entegre iki ShopPHP sitesi arasında anlık stok güncellemesi yapılabilir mi?

Kısa cevap: XML entegrasyonu tek başına anlık stok senkronu sağlamaz; periyodik (cron) güncelleme yapar. İki ShopPHP sitesi arasında anlığa yakın stok aktarımı için ayrıca yazılımdaki Çoklu Site Stok Senkronu (Cross-Site) özelliğinin her iki tarafta da doğru kurulması gerekir.


1) XML entegrasyonu ne yapar?

ShopPHP’de XML ile ürün/fiyat/stok aktarımı genellikle zamanlanmış görev (cron) ile çalışır. Kaynak siteden üretilen XML, hedef sitede belirli aralıklarla okunur ve stok güncellenir.

  • Güncelleme hızı, cron sıklığına bağlıdır (ör. 5 dk, 15 dk, 1 saat).
  • Bu yöntem toplu/merkezi veri aktarımı içindir; sepete ekleme veya sipariş anında otomatik tetiklenmez.
  • İki site birbirinin XML’ini çekiyorsa, her iki tarafta da cron’un düzenli çalışması gerekir.

2) Anlık stok için Cross-Site özelliği

ShopPHP’de iki site arasında stok değişimini olay anında karşı tarafa ileten yapı crossSiteUpdate altyapısıdır. Cron beklemeden, stok değiştiği anda HTTP isteği ile karşı site güncellenir.

Tipik tetikleyiciler:

  • Sepete ürün ekleme / adet değiştirme / sepetten çıkarma (Sepet Zaman Aşımı açıksa)
  • Sipariş onayı (ödeme, panel onayı, banka dönüşü, ödeme cron)
  • Panelden manuel stok kaydı

3) Kurulum özeti (her iki site)

Gönderen siteinclude/conf.php:

$crossSitesArray[0]['URL']      = 'https://hedef-site.com';
$crossSitesArray[0]['field']     = 'gtin';        // eşleşme alanı
$crossSitesArray[0]['password']  = 'ortak_sifre';
// Alt dizin varsa:
$crossSitesArray[0]['path']      = 'shop';

Alan siteinclude/conf.php:

$crossSiteField   = 'tedarikciCode';  // eşleşme alanı
$urunFieldValue   = 'ortak_sifre';

Ürün eşleşme kuralı: Gönderen sitedeki ürünün field değeri (ör. GTIN), alıcı sitede crossSiteField alanında (ör. Tedarikçi Kodu) aynı değere sahip olmalıdır. Alan boşsa istek atlanır.

4) XML + Cross-Site birlikte kullanılırsa

Dikkat: XML ve Cross-Site aynı anda “stok kaynağı” gibi davranırsa birbirini ezebilir.

  • XML cron sık çalışıyorsa, Cross-Site ile gelen güncel stok bir sonraki XML import’ta eski değere dönebilir.
  • Öneri: Bir sitede ana stok kaynağı net olsun; diğer site ya XML ile ya Cross-Site ile beslensin.
  • İki yönlü XML + iki yönlü Cross-Site genelde önerilmez; döngü ve stok çakışması riski artar.

5) Sepet Zaman Aşımı ayarı

Sepete eklenince anlık stok düşümü ve Cross-Site tetiklenmesi için Sepet Zaman Aşımı süresinin açık olması gerekir (ör. 30 dakika). Bu ayar kapalıysa stok çoğunlukla sipariş onayında düşer; Cross-Site de o anda çalışır.

6) Test ve log kontrolü

Kurulum sonrası her iki sitede log dosyalarını kontrol edin:

  • Gönderen: files/logs/cross_site_update-YY-MM-DD.log
  • Alan: files/logs/cross_site_recv-YY-MM-DD.log

Bağlantı testi (alan site):

https://ALAN-SITE/include/lib-pazar.php?crossSitePing=1&key=MD5('ping' + ortak_sifre)

Beklenen yanıt: PING:ok sites=1

7) Sonuç tablosu

Yöntem Hız Kullanım
XML + Cron Periyodik (dakikalar/saat) Toplu ürün/fiyat/stok aktarımı, merkezi katalog
Cross-Site Olay anında (saniyeler) İki ShopPHP arasında canlı stok paylaşımı
XML + Cross-Site Karma Mümkün; kaynak önceliği net tanımlanmalı

Özet

Evet, anlığa yakın stok güncellemesi mümkündür — ancak XML ile değil, Cross-Site stok senkronu ile. XML entegrasyonu tek başına cron periyoduna bağlıdır. İki ShopPHP sitesi arasında gerçek zamanlıya yakın senkron isteniyorsa Cross-Site kurulmalı; XML ile birlikte kullanılacaksa hangi sistemin “asıl stok kaynağı” olduğu netleştirilmelidir.

Teknik not: Cross-Site yalnızca urun.stok alanını okur/günceller; depo bazlı stok sütunları ve varyant stokları bu akışın dışındadır. Ürünlerde eşleşme alanının dolu olması zorunludur.

Ürün Yönetimi

Ürün Yönetimi kategorisinde bulunan diğer sıkça sorulan sorular.