![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 49 Pomógł: 7 Dołączył: 2.04.2011 Skąd: Wawa Ostrzeżenie: (0%) ![]() ![]() |
Witam
Problem polega na tym iż wskazany plik uruchomiony jest równocześnie przez kilka procesów. Czas wykonania pliku zależy od ilości danych znajdujących się na serwerze, czasami będzie to 30sek a czasami dużo więcej niż ustawienie max_execution_time i skrypt zostaje zabity w trakcie działania. Chciałbym zabezpieczyć aplikację na tyle aby takie sytuacje się nie zdarzały. Zarówno dla crona jaki dla uruchomień z przeglądarki (te drugie jak mniemam może być niewykonalne) Poszukuje czegoś bardziej zaawansowanego niż ustawienie max_execution_time i set_time_limit() gdyż chce aby skrypt przetwarzał dane non-stop - 24/7 - a przy ustawieniu max_execution_time na 300 a gdy proces wykona się w 90sek. to mam niewykorzystane 210sek. Zadania crona i ich powielanie (uruchamianie następnych gdy poprzedni jeszcze się nie zakończył) Myślałem nad czymś takimi ale nie bardzo wiem czy to wykonalne i w jaki sposób można to osiągnąć: 1. Sprawdzanie czy działają jakieś procesy związane z tym plikiem, komendą, numerem ID rodzica. 2. Jeśli jakieś by wykrył to miałby czekać na zakończenie procesu, kończyć działanie (swoje) lub kończyć działanie procesu, który wykrył. 3. Po zakończeniu działania uruchomienie komendy za pomocą exec() w tle. Skrypt działa na serwerze dedykowanym także nie ma ograniczeń w kreatywności. Czekam na jakieś sugestie. Jak wy radzicie sobie z zadaniami, które serwer ma przetwarzać non-stop? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 2 921 Pomógł: 269 Dołączył: 11.08.2005 Skąd: 127.0.0.1 ![]() |
@phpion
Tworzenie pliku ma tę przewagę, że jeśli skrypt się wywali, potencjalnie niebezpieczna operacja nie wykona się ponownie, ponieważ będzie istniała blokada w postaci pliku. W tym czasie osoba odpowiedzialna za skrypt otrzyma powiadomienie, że coś się wysypało i zdąży zareagować. W Twoim scenariuszu skrypt będzie się wywalał za każdym razem. Oczywiście wybór sposobu zależy od kontekstu i nie da się jednoznacznie stwierdzić, że któryś jest lepszy lub gorszy. Pliku nie trzeba ręcznie usuwać, ponieważ o to zadba sam skrypt, który sprawdzi czy plik został utworzony jakiś czas temu i sam go usunie, jednocześnie dając czas na usunięcie problemu. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 7.10.2025 - 08:38 |