Example #1
0
 /**
  * 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;
 }