当前位置: 首页>>代码示例>>PHP>>正文


PHP _controlTrafficEnabled函数代码示例

本文整理汇总了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);
 }
开发者ID:Spark-Eleven,项目名称:revive-adserver,代码行数:101,代码来源:adSelect.del.test.php

示例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'];
//.........这里部分代码省略.........
开发者ID:hawodi,项目名称:revive-adserver,代码行数:101,代码来源:al.php

示例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'];
            }
//.........这里部分代码省略.........
开发者ID:Apeplazas,项目名称:plazadelatecnologia,代码行数:101,代码来源:adSelect.php


注:本文中的_controlTrafficEnabled函数示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。