Java ile PHP arasında iletişim

Waffleinstein

şüşko insan
Emektar Üye
Mesajlar
458
En iyi cevaplar
0
Beğeniler
434
Puanları
1,130
Ruh hali
Merhabalar,
Android Studio aracılığıyla bir Android uygulaması geliştiriyorum. Uygulamada bir websitesindeki bazı post verilerine ve session değişkenlerine ihtiyacım var, bunları phpden herhangi bir yolla almak mümkün müdür? PHP Java Bridge adlı sistemden haberdarım ancak bu sistemdeki şemaya göre client'ın ilk bağlandığı yer web server gözüküyor. Böyle bir şey hakkında daha önce tecrübeleri olanları veya beni aydınlatabilecekleri bekliyorum.
 


Elfen

Kızıltaş Madencisi
Mesajlar
508
En iyi cevaplar
0
Beğeniler
596
Puanları
1,230
Java konusunda emin değilim fakat hybrid mobil uygulama test ederken yapmak istediğin işlere benzer bir şeyler yapmıştım ama ne yaptığımı pek hatırlamıyorum :/
@Whoisthatinblack
 

KilllerDragons

Kızıltaş Madencisi
Mesajlar
569
En iyi cevaplar
0
Beğeniler
143
Puanları
560
Ruh hali
java mysql connector kullanıp mysql bağlayıp tablo oluşturabilir php ile myslq bağlanıp o tabloları çekebilirsiniz
 

ysvs06

Marangoz
Mesajlar
50
En iyi cevaplar
0
Beğeniler
29
Puanları
0
Karmaşaya gerrek yok, javadan basit bir http request gönderir halledersin.
 

ysvs06

Marangoz
Mesajlar
50
En iyi cevaplar
0
Beğeniler
29
Puanları
0
Socketle ne kadar uğraşıyorsan bununlada o kadar uğraşıyorsun fakat socket daha güçlü ve daha hızlı.
Eğer kesintesiz bir veri akışı varsa tamam, ama her iki tarafta iletişim protokolü hazırlamak gerek.
Bu arada server side attığın linkte Javada yapılmış, Android uygulamasının server durumunda olması doğru değil. Demek istediğin sanırım PHP de aynı sunucu modeliyle javada client yapmak. @PlatinumTR

Ama php sunucularında soket için bazı zorluklar var:
Ücretsiz php sunucuları soket açmaya izin vermez.
Eğer ini_get('safe_mode') etkin değilse veya config.ini ye erişimin varsa
max_execution_time 0 olmalı, default_socket_timeout 300 gibi olabilir
Ucuz sunucularda genelde confige erişiminiz yoktur.
Hostların Sunucu confinginde (Apache, IIS) threadler ve bağlantı sürelerinde nasıl bir kısıtlama konulduğunuda bilemezsin.

Bu yüzden HTTP PHP de daha güvenli.
Ama kesintisiz veri akışı yapamazsın, dakikada bir defa yapman uygun. Süreyi çok sıklaştırınca bu sefer yine sunucu kısıtlamalarıyla karşı karşıya kalabilirsin.
Eğer uygulamayı tek kişi değil, birçok kişinin kullanmasını hedefliyorsan, Java tarafında HTTP de Cokkie taklit etmen, PHP de session kullanman PHP tarafında çok kolaylık sağlıyacaktır. (tabi herkesin verisi birbirinden farklı ise)

Performans açısından eğer canlı veri akışı alma peşinde değil, bir veya birkaç defa alıcaksan, HTTP ve Socket çokta farketmiyor.
Eğer canlı veri akışı istiyor, dakikalık değil saniyelik veri alıyorsan, hem PHP hem Java tarafında uğraşıp 30 saniyelik geçici Socket bağlantılarını açıp kapatarak sürekli bağlantı kurabilirsin. Uğraştırıcı ama hem güvenli hem performanslı.
 

Whoisthatinblack

Taş Madencisi
Mesajlar
70
En iyi cevaplar
0
Beğeniler
85
Puanları
280
Eğer kesintesiz bir veri akışı varsa tamam, ama her iki tarafta iletişim protokolü hazırlamak gerek.
Bu arada server side attığın linkte Javada yapılmış, Android uygulamasının server durumunda olması doğru değil. Demek istediğin sanırım PHP de aynı sunucu modeliyle javada client yapmak. @PlatinumTR

Ama php sunucularında soket için bazı zorluklar var:
Ücretsiz php sunucuları soket açmaya izin vermez.
Eğer ini_get('safe_mode') etkin değilse veya config.ini ye erişimin varsa
max_execution_time 0 olmalı, default_socket_timeout 300 gibi olabilir
Ucuz sunucularda genelde confige erişiminiz yoktur.
Hostların Sunucu confinginde (Apache, IIS) threadler ve bağlantı sürelerinde nasıl bir kısıtlama konulduğunuda bilemezsin.

Bu yüzden HTTP PHP de daha güvenli.
Ama kesintisiz veri akışı yapamazsın, dakikada bir defa yapman uygun. Süreyi çok sıklaştırınca bu sefer yine sunucu kısıtlamalarıyla karşı karşıya kalabilirsin.
Eğer uygulamayı tek kişi değil, birçok kişinin kullanmasını hedefliyorsan, Java tarafında HTTP de Cokkie taklit etmen, PHP de session kullanman PHP tarafında çok kolaylık sağlıyacaktır. (tabi herkesin verisi birbirinden farklı ise)

Performans açısından eğer canlı veri akışı alma peşinde değil, bir veya birkaç defa alıcaksan, HTTP ve Socket çokta farketmiyor.
Eğer canlı veri akışı istiyor, dakikalık değil saniyelik veri alıyorsan, hem PHP hem Java tarafında uğraşıp 30 saniyelik geçici Socket bağlantılarını açıp kapatarak sürekli bağlantı kurabilirsin. Uğraştırıcı ama hem güvenli hem performanslı.
Güven olayına nereden geldin bilmiyorum fakat Java'da socket üzerinde şifreleme yapabiliyorsun eminim PHP'de de oluyordur. (javax.net.ssl paketine bakabilirsin)

Ücretsiz PHP sunucusu ile profesyonel bir iş sunamayacağın belli dolayısı ile bu tarz bir sunucunun kullanımının tek amacı test olabilir ki bunun için kendi bilgisayarını kullanman çok daha mantıklı dolayısı ile burayı çok kasmana gerek yok.

Sürekli veri aldığında 30 saniyelik geçici socket açarsan performansı çok bozarsın. Bunun yerine her bir client için ayrı bir thread açarak iletişim bittiğinde threadı sonlandırabilirsin. Bunun için ana bir socket olur ve sürekli bağlantıya açık olarak bekler, bağlantı geldiğinde bu bağlantıyı bahsettiğim şekilde bir threada yönlendirir ve bağlantı dinlemeye devam eder. Böylece birden fazla client ile bağlantı kurulabilir ve multi-thread çalışıldığı için performanstanda ödün verilmez.
 

ysvs06

Marangoz
Mesajlar
50
En iyi cevaplar
0
Beğeniler
29
Puanları
0
Güvenlik değil, güvenilirlikten bahsetmek istemiştim. Aslında bütün mevzu şu, web hostinglerdeki PHP ortamı kalıcı socket kurmaya müsait değil. Config etmeye izin veriliyorsa tabii ki sorun yok.
Profesyonel mi? Sizce soru profesyonel bir iş için sorulmuş gibi mi görünüyor?
Tabi konuyu ne kadar okudunuz, verdiğiniz linkte Android Uygulamanı sunucu yap demiş kadar oldunuz.
Tahminimce bu uygulama çok ciddi veri alışverişi gerektirmiyor, önerine uyacağım burayı çok kasmicam, konu sahibi yeteri kadar bilgi sahibi olmuştur.
 

Üst