Как получить список запущенных php-скриптов, использующих PHP exec ()? - PullRequest
5 голосов
/ 25 августа 2011

Мне нужно знать и убивать, если есть какие-либо процессы, выполняющие указанный скрипт PHP. Возможно ли получить список процессов, выполняющих sample.php, используя exec () и скрипт php.

Ответы [ 4 ]

16 голосов
/ 25 августа 2011
exec("ps auxwww|grep sample.php|grep -v grep", $output);

Это будет работать, только если PHP работает в режиме CGI.Если он работает как объект типа SAPI, вы никогда не увидите «sample.php» в списке процессов, просто «httpd».

0 голосов
/ 07 марта 2017

это помогло мне убить мошеннические процессы с помощью параметра url. я решил внести свой вклад в дискуссию, если кто-то еще будет искать ответы.

load yikes.php. идентифицируйте идентификатор процесса (это должно быть первое целое число, к которому вы пришли в каждом индексе массива). скопируйте и вставьте его в URL как? pid = XXXXX. и это ушло.

<code>//http://website.com/yikes.php?pid=668
$pid = $_GET['pid'];
exec("ps auxwww|grep name-of-file.php|grep -v grep", $output);
echo '<pre>';
print_r($output);
echo '
'; // exec ("kill $ pid");
0 голосов
/ 25 августа 2011

Это зависит от множества факторов, включая ОС, версию PHP и т. Д., Но вы можете попробовать использовать сигналы, чтобы получить скрипт, который даст вам свое имя, а затем прекратить работу, если он совпадет.Или попросите скрипт зарегистрировать свой pid и сравнить с запущенными процессами.

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

0 голосов
/ 25 августа 2011

Нет. Потому что PHP запускается через apache / nginx. В случае доступа из командной строки, процесс называется PHP, а не реальным именем вашего скрипта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...