本文整理汇总了PHP中BatchJobPeer::doCountGroupBy方法的典型用法代码示例。如果您正苦于以下问题:PHP BatchJobPeer::doCountGroupBy方法的具体用法?PHP BatchJobPeer::doCountGroupBy怎么用?PHP BatchJobPeer::doCountGroupBy使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类BatchJobPeer
的用法示例。
在下文中一共展示了BatchJobPeer::doCountGroupBy方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: getNextJobPriority
public static function getNextJobPriority($jobType)
{
//$priorities = array(1 => 33, 2 => 27, 3 => 20, 4 => 13, 5 => 7);
$priorities = kConf::get('priority_percent');
$createdAt = time() - kConf::get('priority_time_range');
// $createdAt = kConf::get('priority_time_range');
$c = new Criteria();
$c->add(BatchJobPeer::CREATED_AT, $createdAt, Criteria::GREATER_THAN);
$c->add(BatchJobPeer::JOB_TYPE, $jobType);
$c->add(BatchJobPeer::STATUS, BatchJob::BATCHJOB_STATUS_PENDING);
$c->clearSelectColumns();
$c->addSelectColumn('MAX(' . BatchJobPeer::PRIORITY . ')');
$stmt = BatchJobPeer::doSelectStmt($c, myDbHelper::getConnection(myDbHelper::DB_HELPER_CONN_PROPEL2));
$maxPriority = $stmt->fetchColumn();
// gets the current queues
$c = new Criteria();
$c->add(BatchJobPeer::CREATED_AT, $createdAt, Criteria::GREATER_THAN);
$c->add(BatchJobPeer::JOB_TYPE, $jobType);
$c->add(BatchJobPeer::STATUS, BatchJob::BATCHJOB_STATUS_PENDING, Criteria::GREATER_THAN);
$c->addGroupByColumn(BatchJobPeer::PRIORITY);
// To prevent stress on the master DB - use the slave for checking the queue sizes
$queues = BatchJobPeer::doCountGroupBy($c, myDbHelper::getConnection(myDbHelper::DB_HELPER_CONN_PROPEL2));
// copy the queues and calcs the total
$total = 0;
$queues_size = array();
foreach ($queues as $queue) {
$queues_size[$queue['PRIORITY']] = $queue[BatchJobPeer::COUNT];
$total += $queue[BatchJobPeer::COUNT];
}
// go over the priorities and see if its percent not used
foreach ($priorities as $priority => $top_percent) {
if ($priority > $maxPriority) {
continue;
}
if (!isset($queues_size[$priority])) {
return $priority;
}
$percent = $queues_size[$priority] / ($total / 100);
if ($percent < $top_percent) {
return $priority;
}
}
return 1;
}