logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Jak uruchomić skrypt PHP na serwerze home.pl dla aplikacji Android?

scorpi21 28 Gru 2015 20:59 1263 9
REKLAMA
  • #1 15277466
    scorpi21
    Poziom 9  
    Posty: 8
    Uprzedzam, że jestem początkujący w temacie :)
    Chciałbym zrobić aplikację na androidzie (typu client), żeby mogła się komunikować z serwerem. Zależy mi na tym, żeby zarówno klient i serwer mogli wysyłać wiadomości asynchronicznie.
    Napisałem aplikację na androida. Napisałem skrypt (typu server) w php. Uruchomiłem na urządzeniach w tej samej sieci WLAN i działa.
    Chciałbym teraz, żeby ten skrypt działał na serwerze. Wykupiłem nawet hosting na home.pl ale nie wiem w jaki sposób go uruchomić..

    Może ktoś podpowiedzieć?
  • REKLAMA
  • #2 15278461
    mbo
    VIP Zasłużony dla elektroda
    Posty: 19691
    Pomógł: 2333
    Ocena: 845
    Tak samo jak zrobiłeś to lokalnie.
  • REKLAMA
  • #3 15279285
    scorpi21
    Poziom 9  
    Posty: 8
    Na PC udało mi się uruchomić skrypt komendą: php server.php przez cmd..
    Jak to zrobić na serwerze?
  • REKLAMA
  • #4 15280869
    mbo
    VIP Zasłużony dla elektroda
    Posty: 19691
    Pomógł: 2333
    Ocena: 845
    Tak samo - trzeba tylko mieć dostęp do SSH.
  • REKLAMA
  • #5 15288227
    scorpi21
    Poziom 9  
    Posty: 8
    Tak ale mam SSH;/

    Chcę zrobić prosty komunikator na androida. Wiadomości muszą być dostarczane przez serwer. Czy jest jakaś alternatywa dla REST api? Tak, żeby nie trzeba było wysyłać cyklicznie zapytań HTTP (czy jest dla nas dostępna wiadomość) tylko żeby to serwer nas informował o takim zajściu..
  • #6 15288347
    bogiebog
    Poziom 43  
    Posty: 24793
    Pomógł: 2569
    Ocena: 1530
    scorpi21 napisał:
    tylko żeby to serwer nas informował o takim zajściu..

    - albo utrzymujesz połączenie ze serwerem po którym dostajesz powiadomienie
    albo
    - client ma swojego nasłuchującego serwer-a na który tatem serwer powiadamia

    jak kontrolujesz obie strony, to robisz co dusza zapragnie
  • #7 15288650
    scorpi21
    Poziom 9  
    Posty: 8
    bogiebog napisał:

    - albo utrzymujesz połączenie ze serwerem po którym dostajesz powiadomienie
    jak kontrolujesz obie strony, to robisz co dusza zapragnie


    W jaki sposób podtrzymać takie połączenie?

    URLConnection conn = url.openConnection();
    reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
    	              StringBuilder sb = new StringBuilder();
    	              String line = null;
    
                        while(!reader.ready()){
                            wait(100);
                        }
    		            while((line = reader.readLine()) != null)
    		                {
    		                       sb.append(line + "\n");
    		                }
    	                
  • #8 15288715
    bogiebog
    Poziom 43  
    Posty: 24793
    Pomógł: 2569
    Ocena: 1530
    scorpi21 napisał:
    W jaki sposób podtrzymać takie połączenie?

    Żadna ze stron nie może zrobic "disconnect"-a.
  • #9 15288999
    scorpi21
    Poziom 9  
    Posty: 8
    Robię tak po stronie clienta na Androidzie:
    HttpURLConnection conn = (HttpURLConnection) url.openConnection();
    	              conn.setDoOutput(true);
    	              OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
    	              wr.write( data );
    	              wr.flush();
    
    
    	              reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
    	              StringBuilder sb = new StringBuilder();
    	              String line = null;
    
    		            while((line = reader.readLine()) != null)
    		                {
    		                       sb.append(line + "\n");
    		                }
    	               Content = sb.toString();
    
    	            }

    A tak po stronie serwera:
    (echo z 3 min przerwą do testu)
    
    $data = urldecode($_POST['data']);
           
        sleep(180);
    	  
    print_r($data);


    Po 1,5 min oczekiwania rzuca mi wyjątek java.io.FileNotFoundException w Andoidzie..
  • #10 15289216
    bogiebog
    Poziom 43  
    Posty: 24793
    Pomógł: 2569
    Ocena: 1530
    Po stronie serwera nie masz pełnej kontroli na połączeniem, bo www server a nie twój program/kod kontroluje połączenie, tzn czas wykonywania www żądania.

Podsumowanie tematu

✨ Użytkownik poszukuje sposobu na uruchomienie skryptu PHP na serwerze home.pl, aby jego aplikacja Android mogła komunikować się z serwerem asynchronicznie. Skrypt działa lokalnie w sieci WLAN, ale użytkownik nie wie, jak go uruchomić na hostingu. Odpowiedzi sugerują, że można to zrobić przez SSH, podobnie jak na komputerze lokalnym. Użytkownik pyta również o alternatywy dla REST API, aby serwer mógł informować klienta o nowych wiadomościach bez cyklicznych zapytań. Proponowane rozwiązania obejmują utrzymanie stałego połączenia lub użycie nasłuchującego serwera. Wskazano, że po stronie serwera nie ma pełnej kontroli nad połączeniem, ponieważ to serwer WWW zarządza czasem wykonywania żądań.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA