[CLI] Pojedyczy proces - zabezpieczenie, jak uniemożliwić uruchomienie tego samego skryptu |
[CLI] Pojedyczy proces - zabezpieczenie, jak uniemożliwić uruchomienie tego samego skryptu |
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 |
|
|
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. |
|
|
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?
-------------------- |
|
|
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 ... |
|
|
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 Nie mniej dzięki wszystkim, ale za bezpieczne rozwiązanie plus dla Kocurro Pozdrawiam Cezar708 |
|
|
Wersja Lo-Fi | Aktualny czas: 19.04.2024 - 20:52 |