PHP ve MySQL kullanarak Transaction Processing

3 Cevap php

İki fazlı PHP ve MySQL kullanılarak kesinleştirme uygulamak için çalışıyoruz ve kısa geliyorum.

Ben buldum ana blok ben ikinci aşama için tekrar bulabilirsiniz bir yerde MySQL bağlantı kaynak depolamak mümkün olmam. Bir veritabanı tanıtıcı getirilmeye mümkün mü?

İşte için kod çalışıyorum durum:

  1. Kullanıcı veri gönderir
  2. Server MySQL hvardırket başlatır ve o aldı verilere dayalı bazı sorguları yürütür.
  3. Sunucu kullanıcıya bir dosyayı tekrar gönderir
  4. Kullanıcı başarıyla dosyayı aldığında, sunucu, işlem taahhüt eder. Aksi takdirde onu geri alır.

Bu iki HTTP istek / yanıt döngüsü gerektirecek gibi görünüyor, bu yüzden işlem işlemek amacıyla ikinci isteği de aynı veritabanı sapa yeniden bağlanmak gerekiyor. Ben bu kısmında başarısız oldum.

Bu, "bu PHP mümkün değil" olsa bile herhangi bir tavsiye, açığız

3 Cevap

Lixa İşlem Yöneticisi (http://lixa.sourceforge.net/) bir göz atın bu sürüm 0.9.0 ile başlayan PHP ve MySQL entegre

Bu Distributed Transaction Processing sağlar ve iki fazlı de özelliğini taahhüt.

Selamlar

Ch. F.

Php tabanlı istek / yanıt olduğundan kalıcı bir DB bağlantısı uygulanması AFAIK, possbile değildir.

Bir bilet mekanizması çeşit kullanarak bu kısıtlamaya bir geçici çözüm için deneyebilirsiniz. Sizin adımlar olacaktır:

  1. Kullanıcı veri gönderir
  2. Server MySQL işlem başlar ve bu işlem için bir 'benzersiz' bilet atama, o aldı verilere dayalı bazı sorguları yürütür.
  3. Sunucu kullanıcıya bir dosyayı tekrar ve bilet gönderir
  4. Kullanıcı başarıyla dosyayı aldı ve bilet içeren başka bir istek gönderdiğinde, sunucu, işlem taahhüt eder. Aksi takdirde onu geri alır.
  5. CASSY yorumuna atıfta: belli bir süre sonra tüm işlenmeden TAs eski işlemlere 'sular' beeing sizin db önlemek için geri rulo edilmeli

HTH

KB22 ve rojoca cevap, ben bunu bu şekilde yapmak gerekiyor nedeni bahsediyorum 'dosya' aslında bir mobil cihazda bir veri deposu olarak biter sqlite veritabanı olmasıdır.

İlk istek mesaj sqlite tablolardan veri birleştirme girişiminde sunucusuna güncellenen sqlite veritabanı; daha sonra aynı (eski) sqlite veritabanı göndermek için çalışacağız çünkü mobil cihaz başarıyla, yeni bir sqlite veritabanı (mobil cihazın değişiklikleri ve web uygulama herhangi bir diğer yeni şeyler yansıtan bir) almadığı zaman sorunlar ortaya mobil cihaz üzerinde oluşturulan herhangi bir şey için web tablolarda yinelenen girdileri sonuçlanan web ikinci kez,.

Yani, web cihaz birleştirme değişiklikleri işlemeden önce yeni bir veritabanına sahip olduğundan emin olması gerekir. Cihaz yeni sqlite veritabanı aldıktan sonra açık bir ACK göndermek eğer ağların kaprisleri göz önüne alındığında, bu sadece mümkün görünüyor. Biz iki istekleri yaparsanız ve bu mümkündür (1 birleştirme sqlite database;. 2 cihazda yeni sqlite veritabanının alındığı ACK.).

Bir dikenli sorun gerçekten, ve PHP veritabanı gerekli düzeye aşağı kolları manipüle edemez öğrenmek için yararlı bilgiler bulunuyor.

[Ben de 'gerçek' bir web veritabanı tabloları dayalı cihaza veri dönmek gerek, çünkü ben bir işlem tablo kullanabilirsiniz sanmıyorum. Ben gerçek tabloları kullanmak vermedi auto_increment alanları ile sorunları çalıştırmak] sandın

Tüm yorumlar için teşekkürler.