Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Stopowanie niekonczacego sie skryptu
Forum PHP.pl > Forum > Przedszkole
Vomit
Witam,

Troszeczke sie zaplatalem we wlasnym skrypcie. Po uruchomieniu dziala on w nieskonczonosc (petla while (TRUE) ). Poniewaz do tej pory odpalalem go na localhoscie, wylaczalem go poprzez stop Apache'a. Jest to jednak troszeczke drastyczny ale skuteczny sposob.

Teraz zaczalem sie zastanawiac czy jest jakas inna mozliwosc wylaczenia takiego skryptu?

Pozdrawiam
nasty
Jest, mozesz ten skrypt "zmieszac" z ajaxem, i axajem go wyanczac i wylanczac.
pozdrawiam
Vomit
Wiem, ze AJAX'em moge ten skrypt wywolywac co np. 5 sekund itp. ale wylaczac? Sam sie nie wylaczy bo dziala w nieskonczonosc, a AJAX to jedynie wyslanie rzadania do wlasnie pliku z tym skryptem, ewentualne wylaczenie i tak musialoby byc po stronie php i wlasnie o to pytam.
nasty
ok, mam pomysl ! tongue.gif

w tym while(true) zrob takie cos co sprawdza czy jest jakis plik np. stop.x
jak nie istnieje to nadal wykonuj, a jak istnieje to zatrzymaj, i w gluwnej stronie to ajaxem wlanczaj ten skrypt i jak chcesz wylanczac to wlancz inny skrypt co zrobi plik stop.x i sie zatrzyma .

--Edit: i jak sie zatrzyma to kasuj ten plik.
Vomit
Ciekawy pomysl! Dzieki, napewno zadziala!
tiraeth
Po co tworzyć dodatkowe skrypty? Nie możesz użyć do tego znacznika timestamp?

Przed uruchomieniem pętli tworzyć timestamp+3600 (+godzina), czyli skrypt będzie się wykonywał godzinę...

w funkcji sprawdzasz czy aktualny timestamp jest większy od tego ustawionego przez pętlą... jeżeli tak to zakańczasz breakem...

  1. <?php
  2. $intStartTime = time()+3600;
  3. $intThisTime = time();
  4. while ( $intStartTime >= $intThisTime )
  5. {
  6.  // blablabla
  7.  $intThisTime = time();
  8. }
  9. ?>
nasty
~tiraeth: Z tego co zrobumialem to ~Vomit chce manualnie wlanczac i wyanczac skrypt
LBO
Skoro tworzy demona, niech go zwyczajnie ubije. Nie wiem jak to wygląda na Linuxie, ale na Windzie CTRL+ALT+DEL -> Procesy -> php.exe -> zakoncz proces.
Ewentualnie, niech podepnie skrypt pod socketa i z niego odczytuje komendy (np. STOP).
Albo jak radził kolega wyzej: niech co jakiś czas sprawdzaskrypt, czy istnieje plik np. "file.lock", jezeli tak, usuwa plik i zatrzymuje petle.
Vomit
Rozwiazanie nsaty_psycho najbardziej przypadlo mi do gustu. Jak juz pisal nie chce "zabijac", zbyt drastycznie no i musze na pewien czas wylaczyc dzialanie php.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.