Sizi bir şeyler çalıştırmak istedim. Ben kabaca şudur yeni bir proje başlıyorum:
Önemli bilgiler: PHP ve MySQL kullanarak am
Ben farklı kullanıcılardan bir API yapılacak işlemlerin bir listesini almak her dakika.
Örnek:
user1 send $1 to user2
userx send $2 to usera
userw send $0.50 to user2
etc..
User1 user2 için 1 $ göndermek istediğini söylüyorlar. Orada iki posibilities vardır bu başarılı olduğunu ya da orada yetersiz fon veya kullanıcı adı yanlış yazıldığından çünkü başarısız bulunuyor. Bu unsuccesfull eğer ben kullanıcıya bir mesaj göndermek.
Ben şimdi çeşitli seçenekler karşı karşıyayım - benim düşünce sürecinde benimle çıplak lütfen.
Option 1
Işlenmiş ve onları her dakika işleyen bir cronjob kullanmanız gereken işlemleri içeren bir veritabanı tablo oluşturun. Burada risk komut dosyası bir hata ya da bir zaman aşımı karşı çalıştırabilir ve diğer işlemler hala veritabanı tablosundaki Sürüyor göstermek olduğunu ifade etti. Yani bir zaman damgası karşı kontrol etmek için ikinci bir komut dosyası gerekir.
Option 2
Ben onları almak ve bana bir yanıt getiriyor sonra her bir işlem için çağrılan bir API veya Fonksiyon oluşturma. O zaman ben bu yanıt ile uğraşmak veya bir sonraki işlem geçmek için başka bir API veya Fonksiyonu arayabilirsiniz hangi. Ancak ben hala betiğin durursa onları kaybetme riski alamaz çünkü bir veritabanı tablosunda onları koymak gerekir. Yani aşağıdaki gibi çalışır: Veritabanı tablosundaki tüm işlemleri koymak - hareketi başlatmak - bitmiş işlem tablodan sildiğinizde - hareketi başlatmak 2.
Both options are flawed because you don't know how long the list of transactions will be. If it's long PHP is definitely not optimal to run for a long time - using set timeout to zero is risky. I am looking to create a solution that will scale with PHP. So I was thinking about an Option 3.
Option 3 (Optimal solution?)
10 işlemleri dönmek için bir API kullanın.
Veritabanında onlar gönderildikleri zaman söyleyecek bir senaryo ve zaman damgası gönderilen söylemek için bir bayrak
PHP script API 10 işlemleri retreives - 10 işlemleri yönetir.
Işlem Tamamlandığında - Bu tablodan silin ve tamamlanan işlem tabloya kopyalayın.
Timesent (10 işlemlerin yürütme zaman bir üst sınır dayalı) X dakika sonra büyük ise bir cronjob komut her 3 dakikada bir kontrol var. Gönderilmedi bunları ayarlamak - - Eğer büyükse bu yüzden tekrar dışarı gönderilebilir.
Gördüğünüz gibi ben bu konuda benim bütün düşünce sürecini yazdı ve girdi arıyorum. Kaçırdığım şeyler olacaksa bağlı bulunuyor. Ayrıca bu gerçek mali işlemlerin olmadığını fark edin - ben bunu açıkça yapmak için kullanabilirsiniz sadece iyi metafore bulunuyor.
Çok teşekkür ederim
Buz