2013-07-14 8 views
5

:Neden zumero_sync birden çok kez çağrılmalı? <a href="http://zumero.com/docs/zumero_core.html#zumero_sync" rel="nofollow"><code>zumero_sync</code></a> belgelerine göre

bilgilerin büyük miktarda sunucudan alınır gerekiyorsa, bu fonksiyon birden fazla kez çağrılacak gerekebilir.

Benim Android uygulamasında Zumero kullanan bir sorun değil; Sadece dönüş değeri "0;" ile başlamaz kadar zumero_sync aramaya devam.

Ancak, şimdi de benim sunucu dbfiles ile senkronize eden bir yönetici senaryo yazmaya çalışıyorum. sqlite3 Kabuğunu kullanmak istiyorum ve komut dosyasının komut satırı argümanları ile yürütülmesi için SQL'i geçmesini istiyorum. Db'nin tamamen senkronize olduğundan emin olmak için zumero_sync'u bir döngüde (SQLite desteklemiyor) aramam gerekiyor. Ben bir döngüde sqlite3 uygulayarak herhangi olsaydı ( "0;" arayan, çıkışını okuma), hatta doğal SQLite/Zumero işlevleri çağırmak için bir C++ uygulama yazmak. Tek bir zumero_sync yeterliyse, bu kesinlikle daha kolay olurdu. o dönmeden önce senkronizasyonu tamamlar böylece zumero_sync değiştirilebilir:

benim gerçek soru olduğunu tahmin? Mevcut davranışın daha kullanışlı olduğu durumlar varsa, hangi modun kullanılacağını belirlemek için bir parametre olabilir mi?

(1) Neden zumero_sync() neden bu şekilde işliyor

:

cevap

4

Burada iki temel soru görüyor musunuz?

(2) farklı çalışabilir miyim

?

Ben daha kolay olduğundan (2) Birinci, cevap olacak: Evet, farklı işe yarayabilir. Aksine, biz Senkronizasyon tamamlandıktan sonra bir döngüde zumero_sync() [cesareti] ve getiri gerçekleştiren bir ek fonksiyon, zumero_sync_complete gibi adlandırılmış bir şey() uygulamak (ve muhtemelen yakında, bu kadar getirdi olacaktır) olabilir. çok değer katmıyor çünkü

Biz zumero_sync_complete() uygulamak vermedi. Bu basit bir döngü, bu yüzden kendiniz yazabilirsiniz. :-) döngüler desteklemeyen betik ortamlarında hariç

Er. Sqlite3 kabuğu gibi. için

Cevap (1): bunu yapmak istiyorsa

Zumero senkronizasyon protokolü sunucusunu kısmi sonuçları döndürmek için esneklik sağlamak üzere tasarlanmıştır. Ve sunucu üzerindeki yükü azaltmak (ve ölçeklenebilirliğini arttırmak) uğruna sık sık bunu yapmak istiyor.

müşteriye bu açığa bir nedeni de müşterinin esnekliğini artırmak, göz önüne alındığında. Birden çok gidiş gelişi gerçekleştirdiğimiz sürece, müşteriye aralarında bir şey yapma (belki de bir ilerleme çubuğu güncelleme gibi) için bir fırsat verebiliriz.

Bir istemcinin döngü yinelemeleri arasında yapmak isteyebileceği başka bir şey de bir hata işlemidir. Veya, çok iş parçacıklı bir istemci durumunda, eşitleme sırasında istemcide gerçekleşen değişikliklerle uğraşmak isteyebilir.

Hangi kilitlemenin yönetilmesi gerektiği sorusunu ortaya çıkarır?Tüm döngü boyunca sqlite yazma kilidini tutuyor muyuz? Veya sadece kesinlikle gerekli olduğunda?

Alt satır: Sağlam bir uygulama, büyük olasılıkla kendi kararlarını vermesi ve işler üzerinde tam denetimini sürdürmesi için döngüyü kendisinin uygulamak isteyebilir.

Ancak, gözlemlediğiniz gibi, sqlite3 kabuğunun döngüleri yoktur. Ve bu bir uygulama değil. Ve iş parçacığı yok. Veya ilerleme çubukları. Yani, daha basit ve daha az güçlü bir zumero_sync() formunun mantıklı olduğu bir kullanım durumu.

+0

Teşekkürler Eric! BTW, Zumero'nun senkronizasyon süreci üzerinde çok fazla kontrol sağlamasının harika olduğunu düşünüyorum. –

İlgili konular