Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [CLI] Pojedyczy proces - zabezpieczenie
Forum PHP.pl > Forum > PHP
Cezar708
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
paw-e-l
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.
deirathe
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?
Kocurro
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 ...
Cezar708
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
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.