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:dzień
  • Lokalizacja:Poznań
  • Postów:8775
2

edytowany 1x, ostatnio: cerrato
asdf42
masz jakiś link z instrukcją?
mr_jaro
  • Rejestracja:prawie 14 lat
  • Ostatnio:około 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 13 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:dzień
  • Lokalizacja:Poznań
  • Postów:8775
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:dzień
  • Lokalizacja:Poznań
  • Postów:8775
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:19 minut
  • Postów:3471
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:19 minut
  • Postów:3471
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.
Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)