2010-09-11 3 views
1

В PHP, есть ли способ, который я могу захватить, что используется ЦП каждого метода ImagaMagick/GraphicsMagick, который я выполняю? Использование памяти тоже было бы неплохо.PHP: Получить использование ЦП ImageMagick/GraphicsMagick

В принципе, я пытаюсь сравнить количество ресурсов, которые каждая библиотека использует в моем приложении.

неудачная попытка:

exec('convert a.jpg a.png'); 

$result = array(); 

// Loop until process is detected 
do 
{ 
    exec('ps -eo comm,%cpu,%mem | grep ' . "convert", $result); 
} 
while($result === array()); 

// Display the changing CPU and memory usage of the process 
do 
{ 
    print_r($result); 
    exec('ps -eo comm,%cpu,%mem | grep ' . "convert", $result); 
} 
while($result !== array()); 

ответ

1

Использование памяти должно быть делом записи выходного сигнала memory_get_usage(true) и memory_get_peak_usage(true) до и после каждого вызова вы хотите измерить, вычитая их.

Использование ЦП Я не уверен. В системах Unix может потребоваться сделать exec(), чтобы получить результат ps -ef | grep $phpPid, а затем разобрав это. Вы можете получить $phpPid = getmypid();

+0

Как получить PID процесса преобразования (библиотеку, которую я вызываю из PHP через exec())? Я думаю, что это использование ЦП, которое меня интересует. – StackOverflowNewbie

+0

Если это сам процесс php, то 'getmypid()' даст вам свой идентификатор процесса. Если это отдельная библиотека, найдите ее двоичное исполняемое имя и 'grep' для этого:' ps -ef | grep $ binaryName'. – Fanis

+0

ps -ef не давал мне то, что мне было нужно, но ps -eo comm,% cpu,% mem был. Попытка следовать вашему предложению, я создал сценарий, который по-прежнему не работает для меня. Мое оригинальное сообщение было отредактировано, чтобы показать вам, что я сделал. Вы видите, что я делаю неправильно? – StackOverflowNewbie

Смежные вопросы