Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [CLI] Pojedyczy proces - zabezpieczenie, jak uniemożliwić uruchomienie tego samego skryptu
Cezar708
post 2.10.2009, 07:28:16
Post #1





Grupa: Zarejestrowani
Postów: 1 116
Pomógł: 119
Dołączył: 10.05.2005
Skąd: Poznań

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


Witam,

mam pytanie, chce postawić pewnego demona napisanego w PHP. Mniejsza z tym co on robi.

Ten demon jest odpalany jako skrypt PHP z linii poleceń basha (czyli po prostu CLI).

W jaki sposób mogę się zabezpieczyć aby nie można było podwójnie uruchomić tego samego skryptu?

przykład:
Kod
$ php skrypt.php
proces został uruchomiony (pid 1232)

$ php skrypt.php
nie możesz ponownie uruchomić procesu, wyjście z programu


Pozdrawiam
Cezar708
Go to the top of the page
+Quote Post
paw-e-l
post 2.10.2009, 09:01:57
Post #2





Grupa: Zarejestrowani
Postów: 115
Pomógł: 23
Dołączył: 27.06.2009
Skąd: Jaworzno

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


hmm ja bym to wykombinował tak:
posłużę się dodatkowym plikiem powiedzmy is_running.txt
na początku skryptu sprawdzam czy plik istnieje, jeśli tak to die('nie możesz ponownie uruchomić procesu, wyjście z programu'), jeśli nie to tworzę ten plik i wykonuję skrypt
na końcu skryptu usuwam is_running.txt

problem w tym że jeśli przerwiesz wykonywanie skryptu z konsoli to plik się nie usunie czyli zawsze będzie wywalać nie możesz ponownie uruchomić procesu, wyjście z programu
jak by jeszcze bardziej pokombinować i wykorzystać flock to chyba by to działało zgodnie z oczekiwaniami.
Go to the top of the page
+Quote Post
deirathe
post 2.10.2009, 09:37:02
Post #3





Grupa: Zarejestrowani
Postów: 426
Pomógł: 32
Dołączył: 24.05.2007

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


nigdy nie próbowałem ale może sesją można się posłużyć w CLI, może byłoby to lepsze rozwiązanie i ustawić wygaśnięcie sesji na 5 min?


--------------------
Kawałek mojego blogu
Everything should be as simple as possible but not simpler.
A Einstein
Go to the top of the page
+Quote Post
Kocurro
post 2.10.2009, 10:18:53
Post #4





Grupa: Zarejestrowani
Postów: 461
Pomógł: 32
Dołączył: 17.09.2003
Skąd: Łódź

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


W skrócie:

- jeśli nie istnieje plik program.pid to go tworzysz i wpisujesz do niego swój PID i wykonujesz program
- jeśli istnieje to odczytujesz PID i sprawdzasz czy taki proces jeszcze istnieje, jeśli nie istnieje to do pliku program.pid wpisujesz swój PID i wykonujesz program
- jeśli proces o danym PID istnieje to znaczy, że ...
Go to the top of the page
+Quote Post
Cezar708
post 5.10.2009, 14:02:50
Post #5





Grupa: Zarejestrowani
Postów: 1 116
Pomógł: 119
Dołączył: 10.05.2005
Skąd: Poznań

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


Dzięki za pomoc,

Kocurro Twoje rozwiązanie jest najbardziej proste i logiczne, w zasadzie chyba w ten sposób to każdy robi winksmiley.jpg

Nie mniej dzięki wszystkim, ale za bezpieczne rozwiązanie plus dla Kocurro

Pozdrawiam
Cezar708
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: 19.04.2024 - 20:52