![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 15 Pomógł: 0 Dołączył: 30.09.2006 Ostrzeżenie: (0%) ![]() ![]() |
Cześć.
Robię skrypt w php, który ma mniej więcej taką budowę:
Chodzi o to, że jak odpalę skrypt w putty to wszystko działa dobrze, dopóki nie wyłączę putty. Wtedy skrypt przestaje działać. Chciałbym móc mieć możliwość odpalenia skryptu tak, aby działał w tle niezależnie od tego czy mam włączone putty czy nie. Próbowałem zrobić z tego demona i w "start" mojego skryptu znajdującego się w /etc/init.d/ podać: Kod start() { php "../../home/www/skrypt.php" } Wykonanie polecenia: Kod /etc/init.d/mojdemon start zadziałało w połowie, ponieważ skrypt zaczął się wykonywać, lecz czekał na zakończenie wykonywania skryptu php. Po wyłączeniu putty skrypt przestał działać. Czy ma ktoś jakieś propozycje jak to zrobić? Chodzi o to, żeby skrypt php był uruchomiony cały czas. System to gentoo. Ten post edytował keypax 8.09.2010, 23:44:10 |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 332 Pomógł: 294 Dołączył: 12.10.2008 Skąd: Olkusz Ostrzeżenie: (0%) ![]() ![]() |
może za bardzo nie namieszam choć może już nie ta pora i nie ten stan upojenia ;p by odpowiadać ;p
Chodzi o to, że jak odpalę skrypt w putty to wszystko działa dobrze, dopóki nie wyłączę putty. Wtedy skrypt przestaje działać. sleep a max_exexution_time [jak się to pisze to się pisze ;p] to 2 różne sprawy ;p [znalazłem coś o putty ale za szybko zgubiłem i w tym stanie drugi raz dziś nie znajdę ;p]Chciałbym móc mieć możliwość odpalenia skryptu tak, aby działał w tle niezależnie od tego czy mam włączone putty czy nie. w sumie a pro po sleep na tym forum sobie za wiele tematów kontrowersynych nie przypominam [może za krótko jestem lub za mało czytam] ale większość tyczyła się windows vs linux i w zasadzie na bank większość z tych co pamiętam to uczestniczyłem w nich ;p -> w pewnych blogach podawali jako bug sleep'a, że działa w nieskończoność [bzdura!!!], w innych miejscach, że nie działa jak trzeba [w skrócie piszę - gdyż fakt - na winzgrozie to jest bug sposób dziaąłnia sleep - w manualu php nawet tak napisali pod bugami...]... na to co jestem dziabnięty już za wiele może nie wytłumaczę - ale po wyjściu z sleep nawet na unixie [gdzie to niby w nieskończoność dział sleep - bzdura!!!] gdy skrypt dalej się wykonuje po przekroczeniu max exekution time [jak zwał tak zwał ;p] skrypt zostanie przerwany [jak śpisz to nic nie robisz ;p - a propo temat co zaraz go dam ;p]... więc nie ma prawa bytu w nieskończoność [chyba, że będziesz resetował licznik czasu wykonania skryptu - ale w tamtytm temacie bodajrze było napisane jak - zreszta manual nie gryzie ;p]:
uruchamianie pliku php co 30s bez właczonego kompa - na serwie -------------------- Jeśli twoja ręka rusza do przodu powstrzymaj swój gniew; gdy wyprzedza cię twój gniew - wycofaj rękę.
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 471 Pomógł: 89 Dołączył: 29.07.2008 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
najlatwiej uzyc programu screen i ominac problem
![]() chyba optymalnym rozwiazaniem jest http://pear.php.net/package/System_Daemon http://kevin.vanzonneveld.net/techblog/art...daemons_in_php/ mozesz tez zjesc to widelcem jak na unixowca przystalo ![]() |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 15 Pomógł: 0 Dołączył: 30.09.2006 Ostrzeżenie: (0%) ![]() ![]() |
zegarek84: ledwo cokolwiek zrozumiałem z Twojego postu. max_exexution_time jak zmiany w samym pliku php.ini są dobre. Skrypt się wykonuje odpowiednio długo, jeżeli mam po prostu go odpalonego w putty.
yevaud: dziękuję za linki. Jutro rano jak wstanę to je obadam. |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 1 332 Pomógł: 294 Dołączył: 12.10.2008 Skąd: Olkusz Ostrzeżenie: (0%) ![]() ![]() |
łałć - za dużo piw wczoraj ;p... przyznaję, że nie zrozumiałem do końca pytania choć pod wskazanym linkiem znalazłbyś inne rozwiązanie... oczywiście skoro pracujesz na unix'ie i jeśli na pewno skrypt nie będzie na windowsie pracował to najprostsze rozwiązanie jest to co wskazał yevaud
mozesz tez zjesc to widelcem jak na unixowca przystalo ![]() ale schematycznie spróbuje może opisać jak ja to alternatywnie robię... na początku pliku dla bezpieczeństwa dobrze dać komendę ignore_user_abort [np. jakbyś chciał skrypt zastartować przeglądarką i zamknąć stronę lub inaczej skryptami np. emulującymi przeglądarkę...] w następnym etapie zanim cokolwiek zrobisz w tym skrypcie co ma być oderwanym procesem wyślij pustą dosłownie odpowiedź lub jakąkolwiek treść z nagłówkami zamykającymi połączenie [czyli minimum nagłówków do wysłania to header('Connection: close'); oraz liczba znaków treści wiadomości czyli np. header('Content-Length: '.ob_get_length());] oczywiście aby wcześniej te nagłówki wysłać musisz skorzystać z konstrukcji:
oczywiście aby kontrolować ten oderwany proces [by np. go zakończyć] musisz gdzieś sprawdzać panujące na zewnątrz warunki [czy to w bazie... lub czy istnieje dany plik itd.] - ale nie możesz tego oprzeć o sesję pracującą na plikach [chyba, ze masz ją na bazę...] w tym temacie co Ci wczoraj podałem o tym pisałem dokładnie w tym poście: http://forum.php.pl/index.php?s=&showt...st&p=704649 -------------------- Jeśli twoja ręka rusza do przodu powstrzymaj swój gniew; gdy wyprzedza cię twój gniew - wycofaj rękę.
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 15 Pomógł: 0 Dołączył: 30.09.2006 Ostrzeżenie: (0%) ![]() ![]() |
Dzięki wszystkim za odpowiedzi.
Okazało się, że w gentoo wystarczy użyć polecenia: Kod screen a następnie odpalić nasz skrypt np: Kod php /home/www/skrypt.php Po wyłączeniu putty skrypt działa w tle ![]() (jak na razie ![]() |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 7 Pomógł: 0 Dołączył: 24.09.2009 Ostrzeżenie: (0%) ![]() ![]() |
startem też się da
![]() Dawało się jakiś znacznik chyba & albo $ i skrypt szedł w tle ![]() -------------------- Tłumaczenia Kraków | Biuro tłumaczeń
| Lokalizacja oprogramowania | Lokalizacja stron www | Tłumaczenia | |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 09:06 |