PHP nasıl bir Java programı arasında iletişim kurabilir?

0 Cevap java

Ben sık sık çalıştırmak için bir hesaplama yoğun sorgu gerektiren bir web uygulaması üzerinde çalışıyorum, sonuçları ayrı bir tabloda saklanır. MySQL kullanarak, bu sorgu hakkında 500ms (mümkün olduğunca optimize, inan bana) alır. Bu darboğaz ortadan kaldırmak için, belleğe ilgili DB verileri yükler ve sorguyu kendisi gerçekleştiren bir Java programı yarattık; yaklaşık 8ms (ben biraz gurur duyuyorum bir şey) alır. Ben sonuç almak için bu Java programı kullanmak istiyorum, ve başarısız veya kullanılamaz ise, PHP sahip başarısızlık bir MySQL sorgusu çalıştırın.

Java uygulamasına veri yükleme yana biraz zaman alır, bu kez yük ve bir arka plan işlemi olarak çalışmaya devam edecek. Now, the question is how do I communicate with this Java application via PHP?

Aklınızda tutun:

  • PHP birden çok örneği aynı anda bu Java işlemi ile iletişim kurmak gerekebilir.
  • Java örneği (örneğin: nedense çöküyor) bulunamıyor eğer PHP eski ve yavaş MySQL yöntemini kullanarak ilerleme gerekmektedir.
  • Örneğin Memcache gibi bir işlem aracı, kabul edilebilir.
  • İdeal çözüm yarış koşullarına dayanabilecek.
  • Ben tercihen aracılık MySQL kullanmak istemem.

Ben bu anahtarı "tamamlandı" olarak değiştirilmiştir kadar PHP bilinen bir anahtar ve anket yazmak istiyorsunuz Memcache, kullanmak için gidiyordu, bu arada Java o anahtarı yoklamak istiyorum ve bir kez buldum şey işi gerçekleştirmek ve "tamamlandı" olarak ayarlayın. Ancak, bu iki nedenden dolayı işe yaramaz. İlk olarak, PHP ve Java hem de tefrika nesneleri kullanarak MEMCACHE için okuma / yazma, ve orada o değiştirmek için hiçbir yolu ve Java PHP nesneleri nesneleştirmek ve yardımcısı / tersi istemiyorum - çok dağınık. İkincisi, bu ACID uyumlu değil - inşa kuyruk yarış koşullar olurdu.

Şimdilik, bu yüzden MySQL çok sık ping almaz bir iş anket zaman daha yavaş olması gerekir, çünkü uzak bir optimal çözümden olan, kuyrukta kapalı olup olmadığını görmek için yoklama MySQL "seçer" ile şaşırıp . Ben daha iyi bir çözüm gerekiyor!

Teşekkürler.

Edit: Duh. It looks like I will be using some sort of SocketServer in Java, which I'm unfamiliar with. An example might help :)

0 Cevap