PHP + ANDROID |
PHP + ANDROID |
24.10.2017, 23:22:20
Post
#1
|
|
Grupa: Zarejestrowani Postów: 8 Pomógł: 0 Dołączył: 13.12.2016 Ostrzeżenie: (0%) |
Witam. Nie wiem czy piszę w dobrym dziale ale chciałbym prosić was o pomoc.
Tworzę aplikację która wykorzystuje PHP oraz system Android. Aktualnie aplikacja na telefonie łączy się z serwerem i wykonuje skrypt PHP. Do aplikacji można się zalogować jako administrator lub użytkownik. Administrator ustawia aktywność alarmu i zapisuje w bazie danych(MySQL). Gdy na innym urządzeniu zaloguje się użytkownik jego aplikacja sprawdza w bazie czy alarm jest aktywny. Zrobiłem to na takiej zasadzie, że co sekundę aplikacja użytkownika wykonuje zapytanie do bazy sprawdzające aktywność alarmu. Działa to tak jakby w pętli bo cały czas musi nasłuchiwać bazy. Problem polega na tym, że nie wiem czy takie rozwiązanie jest dobre. Co byłoby w sytuacji gdyby co sekundę zapytanie do bazy robiło 1000 osób? Czy serwer nie byłby za bardzo obciążony? Istnieją metody które wysyłają informacje do aplikacji android o zmianie w bazie danych? Aby działało to automatycznie, żeby urządzenia nie musiały co sekundę tworzyć zapytań. Z góry dziękuję za pomoc |
|
|
25.10.2017, 08:34:26
Post
#2
|
|
Grupa: Zarejestrowani Postów: 467 Pomógł: 77 Dołączył: 6.09.2008 Skąd: Miechów / Kraków Ostrzeżenie: (0%) |
Co sekundę to trochę za często. Wydaje mi się, że odpytanie serwera raz na minutę, czy dwie w zupełności wystarczy. Oprócz tego po stronie serwera możesz zrobić jakiś cache, który przy odpytywaniu przez użytkownika będzie pomijał bazę danych.
-------------------- Niemożliwym jest stworzenie czegokolwiek idiotoodpornego, ponieważ idioci są wyjątkowo pomysłowi.
https://www.aroch.pl https://themeforest.net/user/aroch https://www.astroblog.aroch.pl https://www.4geeks.pl |
|
|
25.10.2017, 10:35:15
Post
#3
|
|
Grupa: Zarejestrowani Postów: 8 Pomógł: 0 Dołączył: 13.12.2016 Ostrzeżenie: (0%) |
Problem polega na tym, że ma to być aplikacja do szkolenia pracowników. Jeżeli administrator ustawi alarm(czyli przerwę od szkoleń, np. na 30 minut) to musi to być szybka reakcja po stronie użytkownika szkolonego. Chciałbym zrobić tak aby zasada działania była podobna do jakiegoś chatboxa gdzie odpowiedź jest wyświetlana natychmiastowo
Zrobiłem też taką wersję gdzie informacja o alarmie jest zapisywana w pliku tekstowym, więc użytkownicy pomijają bazę danych i czerpią informacje tylko z pliku tekstowego. Jednak jest to też połączenie co sekundę tyle, że do pliku tekstowego bez zapytań do bazy. Ten post edytował Krystian950414 25.10.2017, 10:39:45 |
|
|
25.10.2017, 11:07:41
Post
#4
|
|
Grupa: Zarejestrowani Postów: 467 Pomógł: 77 Dołączył: 6.09.2008 Skąd: Miechów / Kraków Ostrzeżenie: (0%) |
W takim wypadku możesz ustawić sprawdzenie na około 5-10 sekund. Będzie to na tyle szybko, żeby użytkownicy dostali powiadomienie praktycznie od razu.
Idealnym rozwiązaniem, było by sprawdzanie pliku tekstowego bezpośrednio, czyli z pominięciem PHP, ale jeśli kod PHP jest dobrze zoptymalizowany to nie powinno być większych problemów z obciążeniem serwera. Pytanie tylko czy to jest wasz serwer, czy jakiejś firmy hostingowej? Jeśli jakiejś firmy hostingowej to mogą wziąć taką ilość zapytać za atak i zablokować dostęp dla tych konkretnych adresów IP. -------------------- Niemożliwym jest stworzenie czegokolwiek idiotoodpornego, ponieważ idioci są wyjątkowo pomysłowi.
https://www.aroch.pl https://themeforest.net/user/aroch https://www.astroblog.aroch.pl https://www.4geeks.pl |
|
|
25.10.2017, 12:42:46
Post
#5
|
|
Grupa: Moderatorzy Postów: 2 921 Pomógł: 269 Dołączył: 11.08.2005 Skąd: 127.0.0.1 |
Poczytaj o Firebase. Dzięki temu będziesz mógł zaimplementować komunikację w czasie rzeczywistym bez ciągłego odpytywania serwera.
-------------------- I would love to change the world, but they won't give me the source code.
My software never has bugs. It just develops random features. |
|
|
25.10.2017, 14:21:02
Post
#6
|
|
Grupa: Zarejestrowani Postów: 8 Pomógł: 0 Dołączył: 13.12.2016 Ostrzeżenie: (0%) |
Dziękuję wam wszystkim za zainteresowanie tematem
Klasa łącząca z serwerem w kodzie aplikacji działa na zasadzie otwierania stron internetowych. Czyli jest to obojętne czy otworzę plik PHP czy plik tekstowy. Dlatego tak jak pisze freemp3 właśnie w taki sposób zrobiłem tą drugą wersję. Co sekundę aplikacja otwiera bezpośrednio plik tekstowy i sprawdza co tam jest za wpis o alarmie. Praktycznie można powiedzieć, że informacje o alarmie odbywają się bez użycia bazy danych ponieważ administrator bezpośrednio modyfikuje plik tekstowy. Jednak dalej jest to łączenie z serwerem co sekundę i boję się, że większa ilość użytkowników przeciąży serwer. Mam nadzieję, że się mylę i jest to dobre rozwiązanie bo przecież proste jest sprawdzanie wpisu w pliku tekstowym Serwer będzie firmowy więc pewnie będzie on działał sprawniej Kolego batman czytałem już coś o Firebase i GCM, jednak opiera się ona bardziej na serwerach google i czy korzystanie z takich rozwiązań jest najlepszym wyjściem z tej stytuacji? Nie jestem zaawansowanym programistą, szukałem różnych informacji ale bezskutecznie. Może istnieje coś takiego jak notyfikacje przesyłane z serwera do aplikacji? Czy to wszystko odbywa się za pomocą serwerów google? Ten post edytował Krystian950414 25.10.2017, 14:26:55 |
|
|
26.10.2017, 08:35:52
Post
#7
|
|
Grupa: Moderatorzy Postów: 2 921 Pomógł: 269 Dołączył: 11.08.2005 Skąd: 127.0.0.1 |
Firebase jest własnością Google, więc tak, będziesz korzystać z serwerów Google. Nie jest to nic strasznego, zwłaszcza że korzystasz a Androida Zamiast Google możesz użyć Amazon SNS.
Jeśli jednak z jakiegoś powodu nie chcesz korzystać z usług firm trzecich, możesz postawić własny serwer z Apache Kafka. -------------------- I would love to change the world, but they won't give me the source code.
My software never has bugs. It just develops random features. |
|
|
26.10.2017, 14:27:16
Post
#8
|
|
Grupa: Zarejestrowani Postów: 8 Pomógł: 0 Dołączył: 13.12.2016 Ostrzeżenie: (0%) |
Zagłębiłem się bardziej w tematyce przesyłania danych w czasie rzeczywistym i o ile się nie mylę, służą do tego sockety? Czyli Apache Kafka jest jednym z socketów, który sami możemy stworzyć?
A jak to wygląda z Node.js? Chciałbym stworzyć taki socket na serwerze, więc jaką usługę wybrać dla początkującego? Czy może jednak wybrać GCM? Dodam, że wszystkie informacje będą przechowywane w bazie, a w czasie rzeczywistym ma być przesyłana informacja tylko o alarmie Ten post edytował Krystian950414 26.10.2017, 18:29:49 |
|
|
28.10.2017, 21:08:01
Post
#9
|
|
Grupa: Moderatorzy Postów: 2 921 Pomógł: 269 Dołączył: 11.08.2005 Skąd: 127.0.0.1 |
Tak, do przesyłania danych w czasie rzeczywistym najczęściej używa się socketów. Praktycznie w każdym języku można je tworzyć, nawet w PHP, więc node.js nie jest tutaj potrzebny. W Twojej sytuacji najlepszym rozwiązaniem jest użycie czegoś gotowego jak Firebase lub gcm.
-------------------- I would love to change the world, but they won't give me the source code.
My software never has bugs. It just develops random features. |
|
|
30.10.2017, 15:00:05
Post
#10
|
|
Grupa: Zarejestrowani Postów: 8 Pomógł: 0 Dołączył: 13.12.2016 Ostrzeżenie: (0%) |
Tworzyłem już Firebase jednak okazało się, że liczba podłączonych jednocześnie użytkowników wynosi 100. Na tą chwilę staram się zrobić serwer node. Pytanie moje brzmi czy jeżeli zrobię serwer node na dysku komputera to nie będzie problemu dołączaniem użytkowników z systemu android? Zazwyczaj tutoriale pokazują jak zrobić połączenie między użytkownikami android jednak serwer znajduje się również na telefonie, no chyba że się mylę
Wydaje mi się, że problem rozwiązany. Tutoriali w internecie jest mnogo więc stworzyłem prosty serwer Node. Z tym nie było problemu gorzej z połączeniem pomiędzy serwerem i androidem. Jednak i to udało się zrobić, dzięki temu mogę przesyłać dane w czasie rzeczywistym. Działa to bez zarzutu, chociaż jestem ciekawy jak to wszystko będzie się sprawować gdy do serwera podłączy się kilkadziesiąt użytkowników Tak więc dzięki za pomoc, a w szczególności dziękuję użytkownikowi batman |
|
|
31.10.2017, 10:37:59
Post
#11
|
|
Grupa: Moderatorzy Postów: 2 921 Pomógł: 269 Dołączył: 11.08.2005 Skąd: 127.0.0.1 |
Jeśli będziesz miał problem z wydajnością przy dużej ilości użytkowników, sprawdź tornado. Framework ten został stworzony z myślą o obsłudze dużej ilości połączeń. Jest dosyć często porównywany z Node.js i w zależności od tego, kto przygotowuje zestawienie, wygrywa lub przegrywa. Tak naprawdę wszystko zależy od tego czy wolisz pisać w javascript czy pythonie.
-------------------- I would love to change the world, but they won't give me the source code.
My software never has bugs. It just develops random features. |
|
|
31.10.2017, 15:21:46
Post
#12
|
|
Grupa: Zarejestrowani Postów: 8 Pomógł: 0 Dołączył: 13.12.2016 Ostrzeżenie: (0%) |
Dzięki batman, będę miał ten framework na uwadze. W zasadzie porównując Python i JavaScript to w tym pierwszym jakieś doświadczenie mam, więc jakoś ogarnę Zobaczymy jak aplikacja przejdzie testy. Serwer będzie w firmie więc powinien być bardziej wydajny niż serwery hostingowe
|
|
|
Wersja Lo-Fi | Aktualny czas: 29.03.2024 - 11:27 |