/** * This function queies the batch job lock table and calculates for each partnerID and job type * its partner load and weigthed partner load. it returns the information as a Map where : * key - partnerId#jobType#jobSubType * value - partnerLoad */ public static function getPartnerLoads() { $dcId = kDataCenterMgr::getCurrentDcId(); $c = new Criteria(); $c->add(BatchJobLockPeer::WORKER_ID, null, Criteria::ISNOTNULL); $c->add(BatchJobLockPeer::DC, $dcId); $c->addGroupByColumn(BatchJobLockPeer::PARTNER_ID); $c->addGroupByColumn(BatchJobLockPeer::JOB_TYPE); $c->addGroupByColumn(BatchJobLockPeer::JOB_SUB_TYPE); $c->addSelectColumn(BatchJobLockPeer::COUNT); foreach ($c->getGroupByColumns() as $column) { $c->addSelectColumn($column); } $stmt = BatchJobLockPeer::doSelectStmt($c); $partnerLoads = array(); $rows = $stmt->fetchAll(PDO::FETCH_ASSOC); foreach ($rows as $row) { $partnerId = $row['PARTNER_ID']; $jobType = $row['JOB_TYPE']; $jobSubType = $row['JOB_SUB_TYPE']; if (is_null($jobSubType)) { $jobSubType = 0; } $jobCount = $row[BatchJobLockPeer::COUNT]; $priorityFactor = PartnerPeer::getPartnerPriorityFactor($partnerId); $key = $partnerId . "#" . $jobType . "#" . $jobSubType; $partnerLoad = new PartnerLoad(); $partnerLoad->setPartnerId($partnerId); $partnerLoad->setJobType($jobType); $partnerLoad->setJobSubType($jobSubType); $partnerLoad->setDc($dcId); $partnerLoad->setPartnerLoad($jobCount); $partnerLoad->setWeightedPartnerLoad($jobCount * $priorityFactor); $partnerLoads[$key] = $partnerLoad; } return $partnerLoads; }