在这里可以看到整个平均5.7秒的注册事务,真正提交注册的响应时间只有0.1~0.15秒左右,而这点时间到底是什么内容影响的,我们通过Xdebug的日志来分析一下。
整个register的时间开销是95毫秒,在下图中可以看到其中87.78%都浪费在了footer函数调用上。
在Footer函数中有哪些部分是需要调整的,我们可以继续往下看,
在更深层的调用中我们会看到jobAutoCreateHandler是主要开销,而在这个开销中包含了下面3个调用。
数据库的操作(PW_JoberDB->add)只占其中15%不到,所以注册操作的主要瓶颈还是在应用层上。而AutoJob所对应的代码为lib/job/autojob.class.php文件 第232行,代码如下:
function addJober($fields) { $fields ['userid'] = intval ( $fields ['userid'] ); $fields ['jobid'] = intval ( $fields ['jobid'] ); if ($fields ['userid'] < 1 || $fields ['jobid'] < 1) { return null; } $joberDao = $this->_getJoberDao (); $result = $joberDao->add ( $fields ); if ($result) { $this->increaseJobNum ( $fields ['userid'] ); } return $result; } |
最后来看一下Nmon的资源占用情况。