Jak uruchomić projekt php w tle na VPS?

Jak uruchomić projekt php w tle na VPS?
asdf42
  • Rejestracja:prawie 9 lat
  • Ostatnio:ponad 2 lata
  • Postów:136
0

Witam,
Na VPS mam zgrany swój projekt php, który działa tak że wyniki swojego działania dopisuje dynamicznie na stronie. Jak wejdę sobie na adres_serwera/projekt to projekt się uruchamia i działa dopóki nie zamknę karty przeglądarki. Zależy mi na tym aby projekt działał cały czas od momentu uruchomienia na VPS (nie wiem jak to zrobić) a po wejściu w przeglądarce na adres serwera widzieć wyniki działa. Zamknę sobie kartę przeglądarki on dalej działa na VPS, a w dowolnym momencie po wpisaniu adresu serwera w przeglądarce podejrzę sobie aktualne wyniki działania. Jak coś takiego zrobić?

edytowany 2x, ostatnio: asdf42
cerrato
Moderator Kariera
  • Rejestracja:około 7 lat
  • Ostatnio:około godziny
  • Lokalizacja:Poznań
  • Postów:8797
2

edytowany 1x, ostatnio: cerrato
asdf42
masz jakiś link z instrukcją?
mr_jaro
  • Rejestracja:prawie 14 lat
  • Ostatnio:ponad 3 lata
  • Lokalizacja:Grudziądz/Bydgoszcz
  • Postów:5300
1

do cyklicznego uruchamiania cron, do asynchronicznego lub na żądanie "pod spodem" supervisor


It's All About the Game.
asdf42
masz jakiś link z instrukcją?
L7
  • Rejestracja:ponad 13 lat
  • Ostatnio:około 6 godzin
  • Postów:433
0

Tu chyba nie chodzi nawet o działanie "na żądanie" bo autor pisał:

asdf42 napisał(a):

Zamknę sobie kartę przeglądarki on dalej działa na VPS, a w dowolnym momencie po wpisaniu adresu serwera w przeglądarce podejrzę sobie aktualne wyniki działania. Jak coś takiego zrobić?

Ja napiszę tak, brzydkie rozwiązanie Twojego problemu to:

Kopiuj
while(true) {
   // twoje obliczenia
}

I ustawić timeout w PHP na 0 :D
Oczywiście, taki "zapętlony" skrypt to tragedia i PHP ogólnie nie nadaje się do takich rzeczy bo trzeba pilnować czy po pewnym czasie nie zapchamy pamięci serwera itd. Kolejna rzecz to nie wiem jaka jest polityka VPS'ów co do takich skryptów.

@asdf42 - twój problem rozbiega się chyba o coś na zasadzie aplikacji klient <-> serwer i teraz masz wyjście, coś w stylu Ratchet albo serwer napisany w innej technologi. Może napisz jakiego rodzaju obliczenia wykonujesz, jak często itd.

Zobacz pozostałe 7 komentarzy
L7
Chodzi mi o to, że jeżeli jest to ogólnodostępne API to nie rozumiem, po co skrypt "mielący" co sekundę i robiący takie obliczenia. Nie prościej jest zrobić aby te obliczenia były JEDNORAZOWO przy wejściu na stronę? Czy ma to być coś na zasadzie "wyniki on-line" podczas oglądania strony
asdf42
są to dane dynamiczne więc musi "mielic"
L7
No to ustaw aby po wejściu na stronę JS wysyłał żądanie co sekundę do tego skryptu, przesyłaj JSON'em do przeglądarki a później tylko wyświetlaj wyniki.
asdf42
myślę że supervisor będzie odpowiedni albo CRON ale jeszcze nie udało mi się to zrobić
cerrato
Moderator Kariera
  • Rejestracja:około 7 lat
  • Ostatnio:około godziny
  • Lokalizacja:Poznań
  • Postów:8797
0

CRON - masz jakiś link z instrukcją?

@asdf42 - CRON to jest narzędzie do cyklicznego odpalania zadań. Opcji jest wiele. Jeśli np. Twój VPS ma jakiś panel do zarządzania (coś w stylu DirectAdmin) to możesz prawdopodobnie z poziomu tego panelu coś sobie ustawić. Jeśli nie, to musisz wejść na serwer (np. przez SSH) i to sobie ustawić. Najczęściej sprowadza się to do wprowadzenia odpowiednich zmian w pliku crontab, ale hasło jest zbyt złożone, zbyt wiele możliwości, żeby była do tego jakaś instrukcja. Po prostu - musisz poszukać w Google - najpierw ogólnie odnośnie podstaw, potem bardziej konkretnie.


asdf42
ale co z wynikiem działania programu? dodam w crontab uruchomienie pliku który ma cały czas działać a wynik na stronie jak mam obejrzeć?
cerrato
Moderator Kariera
  • Rejestracja:około 7 lat
  • Ostatnio:około godziny
  • Lokalizacja:Poznań
  • Postów:8797
0

ale co z wynikiem działania programu? dodam w crontab uruchomienie pliku który ma cały czas działać a wynik na stronie jak mam obejrzeć?

No nie obejrzysz :D
Skrypt te wyniki gdzieś musi zapisywać/trzymać, a w chwili, gdy wejdziesz na stronę, to ona pobierze sobie aktualny zestaw danych. Albo może być tak, że strona będzie okresowo odpytywać serwer o aktualne dane. Opcji jest wiele, ale faktem jest, że jeśli coś puścisz z CRON'a, to będzie to skrypt odpalony na serwerze, ale bez połączenia z jakąś stroną, która wyświetla. Będzie wykonywać obliczenia/działania, ale ich wynik pozostanie na serwerze aż do czasu, gdy jakaś strona po nie się jawnie zgłosi. To tak w duży uproszczeniu.


asdf42
to jak sie jawnie zgłosić?
cerrato
No po prostu - nie połączy się z serwerem i nie zażąda wprost przesłania jakichś danych
asdf42
jest jakiś prosty sposób na obejrzenie tych wyników?
jurek1980
  • Rejestracja:ponad 8 lat
  • Ostatnio:około 2 godziny
  • Postów:3493
1

Nie wiem na co się porywasz, albo może Ty sam nawet nie wiesz.
Powiedzmy, że z Api popierasz sobie dane o pogodzie czy tam jakiś kurs bitcoina.Potem swoim skryptem obrabiasz dane i wyświetlasz komuś na stronie w postaci wykresu. Wtedy takie dane najlepiej gdybyś miał w swojej bazie. Z tego co opisałeś to przy każdej wizycie uzytkownika, skrypt PHP uruchamia się raz. Jeśli będziesz miał 100 użytkowników, to Twój skrypt uruchomi 100 połączeń do Api na sekundę.
Jak już to możesz spróbować Cron z uruchomieniem skryptu co minutę. Skrypt który wykona coś 60 razy na sekundę. Np.

Kopiuj

$start = microtime(true);
set_time_limit(60);// ustawiasz czas maksymalny wykonania skryptu.
for ($i = 0; $i < 59; $i++) {
   $result=$api->query(); 
   $db->input($result);
    time_sleep_until($start + $i);
}
edytowany 1x, ostatnio: jurek1980
Zobacz pozostałe 4 komentarze
jurek1980
Ja chyba nie wiem. Po co masz coś uruchamiać w tle, skoro masz sam oglądać to w przeglądarce sam jeden jedyny. Uruchamiasz przeglądarkę łączysz się ze stroną i oglądasz sobie co chcesz, bez danych historycznych.
asdf42
Ale jak zamknę przeglądarkę i włącze na nowo to wszystko idzie o nowa
jurek1980
Czyli chcesz dane historyczne również. No to gdzieś to się musi zapisywać.
asdf42
No i zapisuje w zmiennych, dane te się podmieniają w zmiennych w zależności od tego co zwróci API i warunków określonych w skrypcie. Projekt działa poprawnie , miałem dłuższy czas uruchomiony lokalnie, ale nie chce cały czas obciążać swojego kompa więc wykupiłem VPS. I chce to na nim odpalić ....
mr_jaro
@asdf42: to dane historyczne musisz zapisywać do bazy, php jest bezstanowe łatwo utracić i nie nadaje się do takiego stałego mielenia i trzymania wszystkiego w pamięci
jurek1980
  • Rejestracja:ponad 8 lat
  • Ostatnio:około 2 godziny
  • Postów:3493
0

To zobacz czy możesz sobie zainstalować GUI na tym VPS i łącz się zdalnie przez jakieś VNC czy co tam się teraz używa jako pulpit zdalny dla Linuxa i oglądaj w ten sposób te dane w przeglądarce uruchomionej na tym VPS. Ponieważ nie jestem linuxowcem to nie powiem ile taka konfiguracja zje zasobów i ile za taki VPS zapłacisz.
Jakiś prosty tutorial pierwszy lepszy z sieci:
https://crm.vpscheap.net/knowledgebase.php?action=displayarticle&id=28

Chociaż według mnie to jednak ta apka Twoja jest źle napisana.

edytowany 1x, ostatnio: jurek1980
asdf42
Czyli już wiesz o co mi chodzi. Dobra propozycja tylko wtedy muszę się łączyć przez pulpit zdalny z VPS żeby sobie podejrzeć wyniki a najlepiej by było to oglądać na stronie pod adresem serwera i do takiego rozwiązania chciałbym dojść.
jurek1980
To musisz przebudować aplikację.
asdf42
Czyli co? przerobić na baze danych? To pomoże rozwiązać mój problem? Danych w projekcie nie przybywa, program operuje na 3000 zmiennych, nie mam potrzeby ich magazynowania. Danych od momentu włączenia poprzez cały czas trwania jest tyle samo, zmieniają się tylko ich wartości w zależności od tego co zwróci API.
jurek1980
No ale na ekranie nie obserwujesz kilku tysięcy dziwnych parametrów tylko jakiś wynik działań. Ten wynik się zmienia w czasie, dlaczego więc do bazy masz nie zapisywać samego wyniku i potem go nie wyświetlać? Może Twoja aplikacja jest tak czuła na opóźnienia jak systemy giełdowe, nie wiem. Ale chyba jednak nie.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.