2011-08-24 14 views

Odpowiedz

16
exec("ps auxwww|grep sample.php|grep -v grep", $output); 

Działa to jednak tylko, jeśli PHP działa w trybie CGI. Jeśli działa jako coś typu SAPI, nigdy nie zobaczysz "sample.php" na liście procesów, tylko "httpd".

+0

Dziękuję, że działa, ale jakie są tu liczby? '1025 19622 0,0 0,0 5336 1308? S 02:15 0:00 wget -q http: // www.example.com/sample.php' –

+0

identyfikator procesu nadrzędnego, identyfikator procesu, użycie procesora, użycie pamięci, itp. ... spójrz na 'man ps', aby poznać szczegóły . –

+0

Thanx @Marc za odpowiedź –

0

Nie ma. Ponieważ PHP jest uruchamiane przez apache/nginx. W przypadku dostępu z wiersza poleceń, procesowi nazywa się PHP, a nie faktyczną nazwę skryptu.

0

To zależy od wielu czynników, w tym systemu operacyjnego, wersji PHP itp., Ale możesz spróbować użyć sygnałów, aby uzyskać skrypt, który poda Ci jego nazwę, a następnie zakończy się, jeśli pasuje. Możesz też zarejestrować skrypt, a następnie porównać z uruchomionymi procesami.

http://stuporglue.org/handling-signals-in-php/

0

to pomogło mi zabić nieuczciwych procesów za pomocą parametru URL. Pomyślałem, że przyczynię się do dyskusji na wypadek, gdyby ktoś jeszcze szukał odpowiedzi.

załaduj yikes.php. identyfikuj identyfikator procesu (powinna być pierwszą liczbą całkowitą, do której należysz w każdym indeksie tablicy). skopiuj i wklej do adresu URL jako? pid = XXXXX. i zniknęło.

Powiązane problemy