本文整理汇总了PHP中_controlTrafficEnabled函数的典型用法代码示例。如果您正苦于以下问题:PHP _controlTrafficEnabled函数的具体用法?PHP _controlTrafficEnabled怎么用?PHP _controlTrafficEnabled使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了_controlTrafficEnabled函数的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: test_adSelect2
//.........这里部分代码省略.........
$ads_copy['ads'][6][1122]['ad_id'] = 1122;
$ads_copy['ads'][6][1122]['priority'] = 0.7;
$ads_copy['ads'][6][1122]['ecpm_enabled'] = 1;
$ads_copy['ads'][6][1122]['ecpm'] = 2.0;
$ads_copy['ads'][6][1124]['ad_id'] = 1124;
$ads_copy['ads'][6][1124]['priority'] = 0.7;
$ads_copy['ads'][6][1124]['ecpm_enabled'] = 1;
$ads_copy['ads'][6][1124]['ecpm'] = 0.5;
$ads_copy['ads'][6][1222]['ad_id'] = 1222;
$ads_copy['ads'][6][1222]['priority'] = 0.7;
$ads_copy['ads'][6][1222]['ecpm_enabled'] = 1;
$ads_copy['ads'][6][1222]['ecpm'] = 0.4;
$GLOBALS['test_MAX_cacheGetAd_val'] = $ads_copy['ads'][6];
// this should result in the following
// [1022] = 0.2
// [1024] = 0.5 * (1-(0.2+0.7)) / (0.5+0.7) = 0.0417
// [1122] = 0.7
// [1124] = 0.7 * (1-(0.2+0.7)) / (0.5+0.7) = 0.0583
// [1222] = 0.0
// this should pick 1024
$GLOBALS['rand_val'] = 0.22;
$return = _adSelect($ads_copy, $context, $source, $richMedia, false, 'ads', 6);
$this->assertTrue(array_key_exists($return['ad_id'], $ads_copy['ads'][6]));
$this->assertEqual($return['ad_id'], 1024);
$this->assertTrue($ads_copy['priority_used']['ads'][6] >= 1);
$this->assertEqual($ads_copy['ads'][6][1022]['priority'], 0.2);
//unchanged
$this->assertNotEqual($ads_copy['ads'][6][1024]['priority'], 0.5);
//scaled
$this->assertEqual($ads_copy['ads'][6][1222]['priority'], 0);
//zeroed
$this->assertEqual($ads_copy['ads'][6][1022]['priority'] + $ads_copy['ads'][6][1024]['priority'] + $ads_copy['ads'][6][1122]['priority'] + $ads_copy['ads'][6][1124]['priority'], 1);
$ads_copy = $test_ads;
$ads_copy['eAds'][-2] = $ads_copy['ads'][5];
$ads_copy['eAds'][-2][1022]['priority'] = 0.2;
$ads_copy['eAds'][-2][1022]['ecpm_enabled'] = 1;
$ads_copy['eAds'][-2][1022]['ecpm'] = 2.0;
$ads_copy['eAds'][-2][1024]['priority'] = 0.1;
$ads_copy['eAds'][-2][1024]['ecpm_enabled'] = 1;
$ads_copy['eAds'][-2][1024]['ecpm'] = 2.0;
$GLOBALS['test_MAX_cacheGetAd_val'] = $ads_copy['eAds'][-2];
// this should pick the second one
$GLOBALS['rand_val'] = 0.51;
$return = _adSelect($ads_copy, $context, $source, $richMedia, false, 'eAds', -2);
$this->assertTrue(array_key_exists($return['ad_id'], $ads_copy['eAds'][-2]));
$this->assertEqual($return['ad_id'], 1024);
$ads_copy = $test_ads;
$ads_copy['eAds'][-2] = $ads_copy['ads'][5];
$ads_copy['eAds'][-2][1022]['priority'] = 0.7;
$ads_copy['eAds'][-2][1022]['ecpm_enabled'] = 1;
$ads_copy['eAds'][-2][1022]['ecpm'] = 1.0;
$ads_copy['eAds'][-2][1024]['priority'] = 0.1;
$ads_copy['eAds'][-2][1024]['ecpm_enabled'] = 1;
$ads_copy['eAds'][-2][1024]['ecpm'] = 2.0;
$GLOBALS['test_MAX_cacheGetAd_val'] = $ads_copy['eAds'][-2];
// this should pick the second one
$GLOBALS['rand_val'] = 0.01;
$return = _adSelect($ads_copy, $context, $source, $richMedia, false, 'eAds', -2);
$this->assertTrue(array_key_exists($return['ad_id'], $ads_copy['eAds'][-2]));
$this->assertEqual($return['ad_id'], 1024);
// case 13: cp6, 4 ads 2 0.7, 2 0.9, ecpm enabled
$GLOBALS['_MAX']['CONF']['delivery']['ecpmSelectionRate'] = 0.001;
$GLOBALS['_MAX']['CONF']['delivery']['enableControlOnPureCPM'] = 0;
$ads_copy = $test_ads;
$ads_copy['ads'][6] = $ads_copy['ads'][5];
$ads_copy['ads'][6][1122] = $ads_copy['ads'][5][1022];
$ads_copy['ads'][6][1124] = $ads_copy['ads'][5][1024];
$ads_copy['ads'][6][1122]['ad_id'] = 1122;
$ads_copy['ads'][6][1124]['ad_id'] = 1124;
$ads_copy['ads'][6][1022]['priority'] = 0.7;
$ads_copy['ads'][6][1022]['ecpm_enabled'] = 1;
$ads_copy['ads'][6][1022]['ecpm'] = 2.0;
$ads_copy['ads'][6][1022]['revenue_type'] = 1;
$ads_copy['ads'][6][1024]['priority'] = 0.9;
$ads_copy['ads'][6][1024]['ecpm_enabled'] = 1;
$ads_copy['ads'][6][1024]['ecpm'] = 0.5;
$ads_copy['ads'][6][1024]['revenue_type'] = 1;
$ads_copy['ads'][6][1122]['priority'] = 0.7;
$ads_copy['ads'][6][1122]['ecpm_enabled'] = 1;
$ads_copy['ads'][6][1122]['ecpm'] = 2.0;
$ads_copy['ads'][6][1122]['revenue_type'] = 1;
$ads_copy['ads'][6][1124]['priority'] = 0.9;
$ads_copy['ads'][6][1124]['ecpm_enabled'] = 1;
$ads_copy['ads'][6][1124]['ecpm'] = 0.5;
$ads_copy['ads'][6][1124]['revenue_type'] = 1;
$GLOBALS['test_MAX_cacheGetAd_val'] = $ads_copy['ads'][6];
$context = '';
// if control were enabled, 1124 would be picked.
// this should pick the 1122 after ecpm optimization
$GLOBALS['rand_val'] = 0.99;
$return = _adSelect($ads_copy, $context, $source, $richMedia, false, 'ads', 6);
$this->assertTrue(array_key_exists($return['ad_id'], $ads_copy['ads'][6]));
$this->assertEqual($return['ad_id'], 1122);
$this->assertTrue($ads_copy['priority_used']['ads'][6] >= 1);
$this->assertEqual(_controlTrafficEnabled($ads_copy['ads'][6]), false);
$GLOBALS['_MAX']['CONF']['delivery']['enableControlOnPureCPM'] = 1;
$this->assertEqual(_controlTrafficEnabled($ads_copy['ads'][6]), true);
$ads_copy['ads'][6][1124]['revenue_type'] = 0;
$this->assertEqual(_controlTrafficEnabled($ads_copy['ads'][6]), true);
}
示例2: _adSelect
function _adSelect(&$aLinkedAdInfos, $context, $source, $richMedia, $companion, $adArrayVar = 'ads', $cp = null)
{
if (!is_array($aLinkedAdInfos)) {
return;
}
if (!is_null($cp) && isset($aLinkedAdInfos[$adArrayVar][$cp])) {
$aAds =& $aLinkedAdInfos[$adArrayVar][$cp];
} elseif (is_null($cp) && isset($aLinkedAdInfos[$adArrayVar])) {
$aAds =& $aLinkedAdInfos[$adArrayVar];
} else {
$aAds = array();
}
if (count($aAds) == 0) {
return;
}
$aContext = _adSelectBuildContextArray($aAds, $adArrayVar, $context, $companion);
_adSelectDiscardNonMatchingAds($aAds, $aContext, $source, $richMedia);
if (count($aAds) == 0) {
return;
}
global $n;
mt_srand(floor((isset($n) && strlen($n) > 5 ? hexdec($n[0] . $n[2] . $n[3] . $n[4] . $n[5]) : 1000000) * (double) microtime()));
$conf = $GLOBALS['_MAX']['CONF'];
if ($adArrayVar == 'eAds') {
if (!empty($conf['delivery']['ecpmSelectionRate'])) {
$selection_rate = floatval($conf['delivery']['ecpmSelectionRate']);
if (!_controlTrafficEnabled($aAds) || mt_rand(0, $GLOBALS['_MAX']['MAX_RAND']) / $GLOBALS['_MAX']['MAX_RAND'] <= $selection_rate) {
$max_ecpm = 0;
$top_ecpms = array();
foreach ($aAds as $key => $ad) {
if ($ad['ecpm'] < $max_ecpm) {
continue;
} elseif ($ad['ecpm'] > $max_ecpm) {
$top_ecpms = array();
$max_ecpm = $ad['ecpm'];
}
$top_ecpms[$key] = 1;
}
if ($max_ecpm <= 0) {
$GLOBALS['_MAX']['ECPM_CONTROL'] = 1;
$total_priority = _setPriorityFromWeights($aAds);
} else {
$GLOBALS['_MAX']['ECPM_SELECTION'] = 1;
$total_priority = count($top_ecpms);
foreach ($aAds as $key => $ad) {
if (!empty($top_ecpms[$key])) {
$aAds[$key]['priority'] = 1 / $total_priority;
} else {
$aAds[$key]['priority'] = 0;
}
}
}
} else {
$GLOBALS['_MAX']['ECPM_CONTROL'] = 1;
$total_priority = _setPriorityFromWeights($aAds);
}
}
} else {
if (isset($cp)) {
$used_priority = 0;
for ($i = 10; $i > $cp; $i--) {
if (isset($aLinkedAdInfos['priority_used'][$adArrayVar][$i])) {
$used_priority += $aLinkedAdInfos['priority_used'][$adArrayVar][$i];
}
}
if ($used_priority >= 1) {
return $GLOBALS['OX_adSelect_SkipOtherPriorityLevels'];
}
$remaining_priority = 1 - $used_priority;
$total_priority_orig = 0;
foreach ($aAds as $ad) {
$total_priority_orig += $ad['priority'] * $ad['priority_factor'];
}
$aLinkedAdInfos['priority_used'][$adArrayVar][$i] = $total_priority_orig;
if ($total_priority_orig <= 0) {
return;
}
if ($total_priority_orig > $remaining_priority || $companion) {
$scaling_denom = $total_priority_orig;
if ($cp >= PRI_ECPM_FROM && $cp <= PRI_ECPM_TO && !empty($conf['delivery']['ecpmSelectionRate'])) {
$selection_rate = floatval($conf['delivery']['ecpmSelectionRate']);
if (!_controlTrafficEnabled($aAds) || mt_rand(0, $GLOBALS['_MAX']['MAX_RAND']) / $GLOBALS['_MAX']['MAX_RAND'] <= $selection_rate) {
$GLOBALS['_MAX']['ECPM_SELECTION'] = 1;
foreach ($aAds as $key => $ad) {
$ecpms[] = $ad['ecpm'];
$adids[] = $key;
}
array_multisort($ecpms, SORT_DESC, $adids);
$p_avail = $remaining_priority;
$ad_count = count($aAds);
$i = 0;
while ($i < $ad_count) {
$l = $i;
while ($l < $ad_count - 1 && $ecpms[$l + 1] == $ecpms[$i]) {
$l++;
}
$p_needed = 0;
for ($a_idx = $i; $a_idx <= $l; $a_idx++) {
$id = $adids[$a_idx];
$p_needed += $aAds[$id]['priority'] * $aAds[$id]['priority_factor'];
//.........这里部分代码省略.........
示例3: _adSelect
/**
* This function takes a group of ads, and selects the ad to show
*
* @param array $aLinkedAds The array of possible ads for this search criteria
* @param array $context The context of this ad selection
* - used for companion positioning
* - and excluding banner/campaigns from this ad-call
* @param string $source The "source" parameter passed into the adcall
* @param boolean $richMedia Does this invocation method allow for serving 3rd party/html ads
* @param boolean $companion Should ad selection only return companion ads?
* @param string $adArrayVar The collection of ads in $aLinkedAds to select the ad from
* @param integer $cp
*
* @return array|void The ad-array for the selected ad or void if no ad selected
*/
function _adSelect(&$aLinkedAdInfos, $context, $source, $richMedia, $companion, $adArrayVar = 'ads', $cp = null)
{
// If there are no linked ads, we can return
if (!is_array($aLinkedAdInfos)) {
return;
}
if (!is_null($cp) && isset($aLinkedAdInfos[$adArrayVar][$cp])) {
$aAds =& $aLinkedAdInfos[$adArrayVar][$cp];
} elseif (is_null($cp) && isset($aLinkedAdInfos[$adArrayVar])) {
$aAds =& $aLinkedAdInfos[$adArrayVar];
} else {
$aAds = array();
}
// If there are no linked ads of the specified type, we can return
if (count($aAds) == 0) {
return;
}
// Build preconditions
$aContext = _adSelectBuildContextArray($aAds, $adArrayVar, $context, $companion);
// New delivery algorithm: discard all invalid ads before iterating over them
// $aAds passed by ref here
_adSelectDiscardNonMatchingAds($aAds, $aContext, $source, $richMedia);
// If there are no linked ads of the specified type, we can return
if (count($aAds) == 0) {
return;
}
// Seed the random number generator
global $n;
mt_srand(floor((isset($n) && strlen($n) > 5 ? hexdec($n[0] . $n[2] . $n[3] . $n[4] . $n[5]) : 1000000) * (double) microtime()));
$conf = $GLOBALS['_MAX']['CONF'];
if ($adArrayVar == 'eAds') {
if (!empty($conf['delivery']['ecpmSelectionRate'])) {
// we should still allow there to be some portion of control
// responses in order to avoid starving out any ad
$selection_rate = floatval($conf['delivery']['ecpmSelectionRate']);
if (!_controlTrafficEnabled($aAds) || mt_rand(0, $GLOBALS['_MAX']['MAX_RAND']) / $GLOBALS['_MAX']['MAX_RAND'] <= $selection_rate) {
// Find the highest value eCPM ad(s) an naively select
// from that set.
$max_ecpm = 0;
$top_ecpms = array();
// build an eCPM sorted index for the ads
foreach ($aAds as $key => $ad) {
if ($ad['ecpm'] < $max_ecpm) {
continue;
} elseif ($ad['ecpm'] > $max_ecpm) {
$top_ecpms = array();
$max_ecpm = $ad['ecpm'];
}
$top_ecpms[$key] = 1;
}
// fallback to weighted prioritization if ecpm weighting zeros out
if ($max_ecpm <= 0) {
$GLOBALS['_MAX']['ECPM_CONTROL'] = 1;
$total_priority = _setPriorityFromWeights($aAds);
} else {
// zero out the priority for all except ads with the
// highest eCPM value
$GLOBALS['_MAX']['ECPM_SELECTION'] = 1;
$total_priority = count($top_ecpms);
foreach ($aAds as $key => $ad) {
if (!empty($top_ecpms[$key])) {
$aAds[$key]['priority'] = 1 / $total_priority;
} else {
$aAds[$key]['priority'] = 0;
}
}
}
} else {
$GLOBALS['_MAX']['ECPM_CONTROL'] = 1;
$total_priority = _setPriorityFromWeights($aAds);
}
}
} else {
if (isset($cp)) {
// How much of the priority space have we already covered?
$used_priority = 0;
for ($i = 10; $i > $cp; $i--) {
if (isset($aLinkedAdInfos['priority_used'][$adArrayVar][$i])) {
$used_priority += $aLinkedAdInfos['priority_used'][$adArrayVar][$i];
}
}
// sanity check, in case there is no space left.
if ($used_priority >= 1) {
return $GLOBALS['OX_adSelect_SkipOtherPriorityLevels'];
}
//.........这里部分代码省略.........