Ta strona używa ciasteczek (cookies), dzięki którym nasz serwis może działać lepiej. Dowiedz się więcej OK, rozumiem

Restart skryptu PHP

Zdecydowałeś się na tworzenie interaktywnych stron przy pomocy PHP? Chcesz w łatwy i szybki sposób zarządzać danymi na swojej stronie? Tutaj znajdziesz pomoc w napotkanych przy tym trudnościach.

Restart skryptu PHP

Post 17.06.2017, 07:13:23

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ś
Kod: Zaznacz cały
for($i=0;$i<count($liczba);$i++)
{
//kod
if($i==10 &&  $i<count($liczba))
{//uruchom mnie od nowa;
sleep(1);
//zakończ skrypt
};


}



}
sasiadstar
Posty: 123
Dołączył(a): 26.08.2016

Re: Restart skryptu PHP

Post 20.08.2017, 21:17:38

To trochę głupie co chcesz zrobić ale... rozwiązania są dwa:
1. Jeśli odpalasz to w przeglądarce to napisz w JSie funkcje, która będzie odświeżała stronę.
2. php-cli
lenyleny
Posty: 15
Dołączył(a): 22.10.2016

Re: Restart skryptu PHP

Post 21.08.2017, 23:22:13

Czas życia skryptu w PHP... Na co ci to? Do takich zastosowań, do jakich PHP jest stworzony, to jest bezsensowne. PHP odpala się do konkretnych żądań, po zrobieniu zadania skrypt się wyłącza. PO co cały czas męczyć skrypt, skoro nie ma już żądania?
Do zastosowań na samym serwerze są inne metody, takie jak CRON.
A samo częste wywoływanie takiego skryptu zaraz by zapchało serwer, gdyby miał jeszcze współdziałać z odbieraniem żądań użytkowników i obsługą ich. Np. na większości hostingów administrator by na takie konto szybko wyłączył Crona.

Istnieją metody, które teoretycznie dałyby radę, ale to byłyby dodatkowe rozszerzenia PHP, ale to by cały czas też działało na danym przebiegu skryptu.

I trzeba pamiętać, że jedno wykonanie skryptu nie równa się jednemu procesowi. To by było ekstremalnie niewydajne.

Trzeba z tym wyjść poza PHP i uruchomić np. niedostępny z poziomu użytkownika program na serwerze czy jakiś skrypt/aplikacja jako moduł serwera.
kabexxx
Posty: 195
Dołączył(a): 27.11.2011

Re: Restart skryptu PHP

Post 22.08.2017, 13:25:03

Ogólnie miotałem się w swoich rozważaniach bo nie wiedziałem jak zrobić zabieg polegający na sprawdzaniu wielu ip jednocześnie.
Teraz chyba rozwiązałem problem (pewnie nie najbardziej optymalnie ale przynajmniej jakoś to działa).
Mam skrypt główny który obsługuje cały system, ustala on np ze trzeba sprawdzić 50 tys ip więc dzieli je na porcje po 300 a te z kolei po 50 które są przekazywane do skryptów wywoływanych przez cli wiec za każdym razem jest uruchamiane 6 skryptów które tworzą 50 wątków (php threads) każdy skrypt robi co ma robić i kończy prace.
ustawienia takie a nie inne robiłem metoda prób i błędów i wyszło ze przy takiej konfiguracji jest najszybciej na moim kompie.
Poco przeszukuje sieć ? Szukam bardzo specyficznych urządzeń do niej podłączonych.
Są co prawda do tego specjalne programy ale nie zapamiętują one już przeskanowanej puli i strasznie dużo przy tym roboty.
sasiadstar
Posty: 123
Dołączył(a): 26.08.2016

Re: Restart skryptu PHP

Post 23.08.2017, 04:40:48

Mówisz o postawionym serwerze na swoim kompie czy hostingu, na którym możesz dowolnie konfigurować maszynę?

Napisz normalny program(C/C+, Java czy co tam chcesz), skompiluj go i uruchamiaj binarkę, niezależnie od wywołań.
Nie trzeba nawet bawić się w moduły serwera, jeśli masz dostęp do PHP-CLI. Taką binarkę możesz uruchomić za pomocą funkcji exec. Potem wynikami bawić się w PHP. Choć najlepiej od razu przez sterownik do bazy czy zapisywać tam czy do plików.
kabexxx
Posty: 195
Dołączył(a): 27.11.2011

Re: Restart skryptu PHP

Post 25.08.2017, 09:47:39

W chałupie :)
Ba napisz ile to ja się przy tym muszę upocić za nowy język to ja podziękuje.
sasiadstar
Posty: 123
Dołączył(a): 26.08.2016

Re: Restart skryptu PHP

Post 25.08.2017, 20:32:39

Chcesz po prostu napisać demona. Zobacz rozwiązania tutaj choćby: https://github.com/shaneharter/PHP-Daemon

Najprościej urchomić się ponownie możesz albo przez shell_exec, albo popen albo pcntl_fork. Z czego to ostatnie jest po prostu sklonowaniem procesu.
Sabat
Posty: 46
Dołączył(a): 24.09.2005
Lokalizacja: Kraków/Krosno

Re: Restart skryptu PHP

Post 26.08.2017, 21:19:32

Nie wiem jak to się fachowo nazywa ale tak to własnie działa jeden 'proces' jest nadrzędny i uruchamia inne poprzez shell exec z przekazanymi parametrami od jakiego miejsca i ile maja pobrać z tablicy ,sprawdzić Ip i zapisać dane z powrotem do tablicy tyle ze każdy taki hmm daemon uruchamia php threads do którego te dane wrzuca i za jednym podejściem sprawdza 50 adresów a w sumie wszystkie sprawdzają 300 co zajmuje kolo 3-5 sekund co jest rezultatem zadowalającym jak dla mnie.
Kod: Zaznacz cały
$output = shell_exec('C:\xampp\php\php.exe -f C:\xampp\htdocs\enigma\check_ip.php '.$wsad);
sasiadstar
Posty: 123
Dołączył(a): 26.08.2016


Powrót do PHP i bazy danych


 


  • Podobne wątki
    Odpowiedzi
    Wyświetlone
    Ostatni post

Kto przegląda forum

Użytkownicy przeglądający ten dział: Yahoo [Bot] i 2 gości

Hosting, Domeny, SSL

Subskrypcja

Mamy 50459 zarejestrowanych użytkowników.
Najnowszy użytkownik: Maja77dg


Nasi użytkownicy napisali:

  • 935695 wiadomości
  • w 246594 tematach

Najnowsze wpisy na blogu

Najnowsze artykuły

Najaktywniejsi (ostatnie 30 dni)