用D实例化后,无法执行save方法
//CaseModel $ret = $this->runCmd($caseId, $planId); //当这个runCmd长时间运行结束后,当执行到setOver中的$ret = $this->save($data)时,无反应,一直卡着不动,能帮忙分析一下原因吗? $data['log'] = implode("\r",$ret['msg']); $data['id'] = $reportId; D('Report')->setOver($data);
//ReportModel public function setOver($data){ //将执行该条case时的log保存下来 $this->saveJmeterLog($data['id']); file_put_contents('log.txt',"this:".var_export($this,true).PHP_EOL,FILE_APPEND); file_put_contents('log.txt',"开始查询detail表:".var_export(time(),true).PHP_EOL,FILE_APPEND); $details = D("Detail")->getDetail(array('reportId'=>$data['id'])); file_put_contents('log.txt',"结束查询detail表:".var_export(time(),true).PHP_EOL,FILE_APPEND); file_put_contents('log.txt',"开始遍历details:".var_export(time(),true).PHP_EOL,FILE_APPEND); $data['result'] = D("Report")->getResult($details); file_put_contents('log.txt',"结束遍历details:".var_export(time(),true).PHP_EOL,FILE_APPEND); file_put_contents('log.txt',"遍历返回的result:".var_export($data['result'],true).PHP_EOL,FILE_APPEND); $data['status'] = ReportModel::OVER; file_put_contents('log.txt',"Status:".var_export($data['status'],true).PHP_EOL,FILE_APPEND); file_put_contents('log.txt',"开始保存结果到Report表:".var_export(“”,true).PHP_EOL,FILE_APPEND); $ret = $this->save($data); // runCmd长时间运行,此处一直卡着,无反应 file_put_contents('log.txt',"结束保存结果到Report表:".var_export($ret,true).PHP_EOL,FILE_APPEND); if(!$ret){ Log::write("设置执行状态为完成失败,reportId=".$data['id']); } }
/** * 保存数据 * @access public * @param mixed $data 数据 * @param array $options 表达式 * @return boolean */ public function save($data='',$options=array()) { file_put_contents('log.txt',"进入Save方法:".var_export(time(),true).PHP_EOL,FILE_APPEND); if(empty($data)) { // 没有传递数据,获取当前数据对象的值 if(!empty($this->data)) { $data = $this->data; // 重置数据 $this->data = array(); }else{ $this->error = L('DATA_TYPE_INVALID'); return false; } } file_put_contents('log.txt',"开始数据处理:".var_export(time(),true).PHP_EOL,FILE_APPEND); // 数据处理 $data = $this->_facade($data); // 分析表达式 $options = $this->_parseOptions($options); if(false === $this->_before_update($data,$options)) { return false; } if(!isset($options['where']) ) { // 如果存在主键数据 则自动作为更新条件 if(isset($data[$this->getPk()])) { $pk = $this->getPk(); $where[$pk] = $data[$pk]; $options['where'] = $where; $pkValue = $data[$pk]; unset($data[$pk]); }else{ // 如果没有任何更新条件则不执行 $this->error = L('OPERATION_WRONG'); return false; } } file_put_contents('log.txt',"开始update:".var_export(time(),true).PHP_EOL,FILE_APPEND); $result = $this->db->update($data,$options); file_put_contents('log.txt',"结束update:".var_export(time(),true).PHP_EOL,FILE_APPEND); if(false !== $result) { if(isset($pkValue)) $data[$pk] = $pkValue; $this->_after_update($data,$options); } return $result; }
进入save,发现卡在了update,该怎么继续定位问题呢