2016-04-23 9 views
0

ich habe den Namen eines langen währenden Prozesses wie ffmpeg (oder mehr), und ich will, es töten - oder sie - in PHP und ohne die execKill-Prozesse ihre Namen in PHP mit

mit Ist das möglich? Es ist genau wie killall ffmpeg Linux-Befehl.

Antwort

2

Sie Prozess in sicherer Art und Weise töten können die Posix-Funktion "posix_kill" verwenden. Beispiel:

// We assumes that 1223 PID is one ffmpeg process 

posix_kill(1223, SIGHUP); // This send a polite termination signal to the process 

posix_kill(1223, SIGINT); // This send a interrupt signal to the process 

posix_kill(1223, SIGTERM); // This send the termination signal and tried to clean-up the process (Use it if SIGHUP and SIGINT fails) 

posix_kill(1223, SIGKILL); // This send an unpolite signal to the kernel explaining that we want to kill the process ASAP and unconditionally and we don't care if we loss some data and the process is going to generate some memory leak (Use this as last option). 

Das Problem ist jetzt, dass Sie die ffmpeg PIDs haben wollen, können Sie das in einem nicht-intrusive Weise das Lesen der Prozesse Informationen aus dem „proc“ Dateisystem erreichen kann.

Beispiel, das den Prozess Name lautet: /proc/1223/cmdline

Um die höhere/maximale Prozessnummer zu erhalten, müssen Sie die Datei/proc/sys/kernel/pid_max lesen. Jetzt müssen Sie über die Prozessinformationen in den "proc" Dateisystemen iterieren, bis der pid_max erreicht ist. Sie müssen überprüfen, ob das Prozessverzeichnis existiert und dass die von/proc/xxxx/cmdline zurückgegebene Zeichenfolge die Zeichenfolge "ffmpeg" oder "libav" enthält (Einige Linux-Distributionen haben ffmpeg von libav oder ähnlichem umbenannt).

Denken Sie daran, dass der PHP-Skriptbesitzer (vielleicht Apache?) Zu der gleichen Gruppe hinzugefügt werden sollte, die die ffmpeg-Prozesse startet, um die ffmpeg-Prozesse zu beenden.

0

Eigentlich können Sie Linux-Befehle über "Exec" -Funktion verwenden, ich kenne keine andere Möglichkeit. Check this out:

http://php.net/manual/en/function.exec.php

+0

exec habe einige Sicherheitsrisiken, ich kann es nicht für jetzt verwenden. –

+0

Eigentlich ist es so sicher, wenn Sie es mit gefilterten Daten verwenden. –

+0

möchte es deaktiviert halten, damit ein Hacker seine Skripts nicht ausführen kann. das ist mein Chef, nicht meins: D –

Verwandte Themen