2010-09-11 15 views
1

En PHP, y at-il un moyen de capturer l'utilisation du CPU de chaque méthode ImagaMagick/GraphicsMagick que j'exécute? L'utilisation de la mémoire serait bien aussi. Fondamentalement, j'essaie d'évaluer la quantité de ressources que chaque bibliothèque utilise dans mon application.PHP: Obtenir l'utilisation du processeur de ImageMagick/GraphicsMagick

Échec tentative:

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()); 

Répondre

1

utilisation de la mémoire doit être une question d'enregistrer la sortie de memory_get_usage(true) et memory_get_peak_usage(true) avant et après chaque appel à mesurer, puis de les soustraire.

Utilisation du processeur Je ne suis pas sûr. Sur les systèmes Unix, il est possible de faire exec() pour obtenir la sortie de ps -ef | grep $phpPid, puis d'analyser cela. Vous pouvez obtenir $phpPid = getmypid();

+0

Comment puis-je obtenir le PID du processus de conversion (la bibliothèque que j'appelle de PHP via exec())? C'est l'utilisation du CPU qui m'intéresse, je pense. – StackOverflowNewbie

+0

Si c'est le processus PHP lui-même, alors 'getmypid()' vous donnera son identifiant de processus. Si c'est une bibliothèque séparée, trouvez son nom d'exécutable binaire et 'grep' pour cela:' ps -ef | grep $ binaryName'. – Fanis

+0

ps -ef ne me donnait pas ce dont j'avais besoin, mais ps -eo comm,% cpu,% mem l'était. En essayant de suivre votre suggestion, j'ai créé un script qui ne fonctionne toujours pas pour moi. Mon message original a été modifié pour vous montrer ce que j'ai fait. Voyez-vous ce que je fais mal? – StackOverflowNewbie