Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 记录cronjobs的cpu时间、峰值内存等_Php_Profiling_Monitoring_Crontab - Fatal编程技术网

Php 记录cronjobs的cpu时间、峰值内存等

Php 记录cronjobs的cpu时间、峰值内存等,php,profiling,monitoring,crontab,Php,Profiling,Monitoring,Crontab,我在Web服务器上有相当多的cronjob,它们以不同的精度运行 似乎其中一些测试数据库需要意外的CPU周期数。当然,我可以看到jobs在16:30咆哮什么,但是由于cron的数量,如果我有这样一个日志,我的任务会容易得多: Dec 19 02:13:09 /var/crons/cron1 [user cpu time used] [system cpu time used] [peak mem] .. 我是否可以在crontab之前添加一个实用程序,如下所示: */6 * * *

我在Web服务器上有相当多的cronjob,它们以不同的精度运行

似乎其中一些测试数据库需要意外的CPU周期数。当然,我可以看到jobs在16:30咆哮什么,但是由于cron的数量,如果我有这样一个日志,我的任务会容易得多:

Dec 19 02:13:09  /var/crons/cron1  [user cpu time used]  [system cpu time used]  [peak mem]  ..
我是否可以在crontab之前添加一个实用程序,如下所示:

*/6 * * * * nice -n 18 getrusage?? /usr/bin/php /var/crons/cron1 > /var/log/something
可能与
getrusage(2)

相关的东西实际上可以从PHP调用,所以这个想法可能是可行的:不要从crontab调用/usr/bin/PHP,而是在调用实际的PHP脚本之前和之后调用调用getrusage的包装器:

#!/usr/bin/php
<?php
$fh = fopen("/var/log/cronusage.log", "a");
fputs($fh, "Executing " . $_SERVER['argv'][1] . "\n");
fputs($fh, "BEFORE\n");
foreach (getrusage() as $k => $v) {
    fputs($fh, "$k -> $v\n");
}
fclose($fh);

$_SERVER['argv'][0] = '/usr/bin/php';
// FIXME Attention args not escaped possible security vuln.
system(join(' ', $_SERVER['argv']));

$fh = fopen("/var/log/cronusage.log", "a");
fputs($fh, "AFTER\n");
foreach (getrusage() as $k => $v) {
    fputs($fh, "$k -> $v\n");
}
fputs($fh, "\n");
fclose($fh);
?>
#/usr/bin/php
$v){
FPUT($fh,“$k->$v\n”);
}
FPUT($fh,“\n”);
fclose($fh);
?>
这不是测试,只是一个想法

time(1)
命令也可用于此目的