Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Auto restart skryptu PHP
sasiadstar
post 17.06.2017, 06:20:24
Post #1





Grupa: Zarejestrowani
Postów: 102
Pomógł: 0
Dołączył: 19.06.2015

Ostrzeżenie: (0%)
-----


Witam
Skrypt który "piszę" w bólach ogólnie działa w szczególności na lokalu ale na serwerze co chwila napotykam różnego rodzaju problemy a jednym z nich jest czas życia skryptu.
W związku z tym moje pytanie jest takie, jak uruchomić skrypt przez jego własną instancję tj.
Uruchamiam skrypt np 10 sekund a potem chciałbym uruchomić go jeszcze raz a obecny proces ubić i tak w kółko aż do wykonania wszystkiego co miał zrobić?
Np takie coś
  1.  
  2. for($i=0;$i<count($liczba);$i++)
  3. {
  4. //kod
  5. if($i==10 && $i<count($liczba))
  6. {//uruchom mnie od nowa;
  7. sleep(1);
  8. //zakończ skrypt
  9. };
  10.  
  11.  
  12. }
  13.  

Go to the top of the page
+Quote Post
Tomplus
post 17.06.2017, 08:21:03
Post #2





Grupa: Zarejestrowani
Postów: 1 875
Pomógł: 230
Dołączył: 20.03.2005
Skąd: Będzin

Ostrzeżenie: (0%)
-----


Poczytaj o rekurencji i wszystko Ci się wyjaśni smile.gif
http://phpedia.pl/wiki/Rekurencja


https://stackoverflow.com/questions/2648968...function-in-php
Go to the top of the page
+Quote Post
sasiadstar
post 17.06.2017, 09:55:11
Post #3





Grupa: Zarejestrowani
Postów: 102
Pomógł: 0
Dołączył: 19.06.2015

Ostrzeżenie: (0%)
-----


To nie o to chodzi bo skrypt i tak po dokładnie 450 sekundach zostanie zabity przez serwer, Chodzi o wywołanie jego kolejnej instancji np skrypt.php musi po 400 sekundach uruchomić nowy proces skrypt.php a sam siebie zabić.
Go to the top of the page
+Quote Post
Pyton_000
post 17.06.2017, 09:59:48
Post #4





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


cron?
Go to the top of the page
+Quote Post
sasiadstar
post 17.06.2017, 10:39:26
Post #5





Grupa: Zarejestrowani
Postów: 102
Pomógł: 0
Dołączył: 19.06.2015

Ostrzeżenie: (0%)
-----


Coś więcej?
Go to the top of the page
+Quote Post
Pyton_000
post 17.06.2017, 11:09:37
Post #6





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


Ustawiasz sobie crona co 5 min niech odpala skrypt, a w samym skrypcie ubijasz po 4 np.

Chociaż lepiej byś powiedział co ten skrypt robi
Go to the top of the page
+Quote Post
Tomplus
post 17.06.2017, 11:10:53
Post #7





Grupa: Zarejestrowani
Postów: 1 875
Pomógł: 230
Dołączył: 20.03.2005
Skąd: Będzin

Ostrzeżenie: (0%)
-----


Tak jak mówi Python, zamiast uruchamiać skrypt w skrypcie smile.gif
To użyj CRON, czyli harmonogramu zadań serwera. https://www.wikiwand.com/pl/Cron

Możesz ustawić tak, że co minutę wywołuje skrypt PHP. Możesz nawet ustawić że co 10sekund będzie wykonywał się skrypt, ale nie zalecam.

Ten post edytował Tomplus 17.06.2017, 11:11:50
Go to the top of the page
+Quote Post
sasiadstar
post 17.06.2017, 13:31:39
Post #8





Grupa: Zarejestrowani
Postów: 102
Pomógł: 0
Dołączył: 19.06.2015

Ostrzeżenie: (0%)
-----


Skrypt domyślnie analizuje adresy url (czy serwer działa czy nie)
Własnie o to mi chodzi żeby skrypt uruchomić z Crona a potem żeby się sam "replikowal".
Zadanie może być wykonywane i przez parę godzin, więc trochę bym musiał tego dodać a też bez sensu jest żebym np ustawił przez 6 godzin co 5 minut bo jeżeli wszystko zrobi krócej to będzie działał bezczynnie. Może mu to zająć 30 minut a równie dobrze pół nocy.
Wolałbym go uruchamiać jako kolejna instancja tak żeby w momencie kiedy skończy przerabiać bazę danych nie chodził na darmo.
Skrypt ma działać tylko w nocy a nie cały czas.

Ten post edytował sasiadstar 17.06.2017, 13:33:38
Go to the top of the page
+Quote Post
Tomplus
post 17.06.2017, 13:39:28
Post #9





Grupa: Zarejestrowani
Postów: 1 875
Pomógł: 230
Dołączył: 20.03.2005
Skąd: Będzin

Ostrzeżenie: (0%)
-----


To ustawiasz albo cron na okres czasu który ma pracować, albo w skrypcie ustawiasz warunek czasowy np. jeżeli 18:00 - 6:00 skrypt działa, else nic nie rób.
Go to the top of the page
+Quote Post
sasiadstar
post 18.06.2017, 09:09:21
Post #10





Grupa: Zarejestrowani
Postów: 102
Pomógł: 0
Dołączył: 19.06.2015

Ostrzeżenie: (0%)
-----


Ok
Powiedzmy że pójdę tą drogą.
Czy tak będzie ok
godziny 0-6
minuty */5
Go to the top of the page
+Quote Post
Pyton_000
post 18.06.2017, 10:16:45
Post #11





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


Przecież możesz skrypt odpalać nawet co 5 min, a w samym skrypcie sprawdzać czy:
- inny skrypt nadal nie pracuje, jeśli tak to exit
- jeśli inny nie pracuje to sprawdź czy jest coś do roboty
- jeśli jest coś do roboty to działaj
- jak nie ma nic do roboty to exit.

Go to the top of the page
+Quote Post
sasiadstar
post 18.06.2017, 12:02:18
Post #12





Grupa: Zarejestrowani
Postów: 102
Pomógł: 0
Dołączył: 19.06.2015

Ostrzeżenie: (0%)
-----


No Ok więc Crone plus sprawdzanie czy skrypt jest uruchomiony jak nie to do roboty
To jeszcze mi podpowiedz jaka funkcja do tego służy (sprawdzająca czy skrypt jest uruchomiony czy nie.
Go to the top of the page
+Quote Post
viking
post 18.06.2017, 12:39:00
Post #13





Grupa: Zarejestrowani
Postów: 6 378
Pomógł: 1116
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


Zapisz informacje o pracy do pliku i kasuj po zakończeniu pracy.


--------------------
Go to the top of the page
+Quote Post
sasiadstar
post 18.06.2017, 13:34:24
Post #14





Grupa: Zarejestrowani
Postów: 102
Pomógł: 0
Dołączył: 19.06.2015

Ostrzeżenie: (0%)
-----


Strasznie tu kombinowane wszystko, ale podsunęliście mi mniej więcej jak to ma wyglądać, poszperałem trochę i daje gotowca prosto i przyjemnie bez udziwnień.
Tworzymy plik php i dodajemy do crona

  1.  
  2. <?php
  3. $output = shell_exec('ps -C php -f');
  4.  
  5. if (strpos($output, "usun_martwe_linki.php")===false) {
  6.  
  7. shell_exec('php usun_martwe_linki.php > /dev/null 2>&1 &');// To jest ten fragment o który mi chodziło shell_exec
  8. };
  9.  


Prawda jest taka że
  1. shell_exec('php usun_martwe_linki.php > /dev/null 2>&1 &');



to jest to o co mi chodzilo,czyli uruchomienie skryptu z poziomu skryptu
dodać tylko jakąś pętle i będzie pięknie chodzić.

Można zamknąć temat
Go to the top of the page
+Quote Post
Pyton_000
post 18.06.2017, 14:25:09
Post #15





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


To teraz uruchom sobie np. 5x tak "subskrypt" i zobacz co się będzie działo. potem dodatkowo ubij proces główny.
poza tym shell_exec nie wszędzie jest dostępne (shared hostingi)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 8.07.2025 - 21:41