Пример #1
0
 public function process_rtb_ping_statistics(&$AuctionPopo)
 {
     /*
      * COLLECT STATS FOR THE BID LOGS
      */
     $bids_total = 0;
     $bids_won = 0;
     $bids_lost = 0;
     $bid_errors = 0;
     $spend_total_gross = 0;
     $spend_total_private_exchange_gross = 0;
     $spend_total_net = 0;
     $error_list = array();
     foreach ($this->RTBPingerList as $RTBPinger) {
         $SellSidePartnerHourlyBids = new \model\SellSidePartnerHourlyBids();
         $SellSidePartnerHourlyBids->SellSidePartnerID = $RTBPinger->partner_id;
         $SellSidePartnerHourlyBids->PublisherAdZoneID = $this->PublisherAdZoneID;
         $SellSidePartnerHourlyBids->BidsWonCounter = 0;
         $SellSidePartnerHourlyBids->BidsLostCounter = 0;
         $SellSidePartnerHourlyBids->BidsErrorCounter = 0;
         $SellSidePartnerHourlyBids->SpendTotalGross = 0;
         $SellSidePartnerHourlyBids->SpendTotalPrivateExchangeGross = 0;
         $SellSidePartnerHourlyBids->SpendTotalNet = 0;
         if ($RTBPinger->ping_success == true) {
             $bids_total += $RTBPinger->total_bids;
             if ($RTBPinger->won_auction === true) {
                 $bids_won += $RTBPinger->won_bids;
                 $bids_lost += $RTBPinger->lost_bids;
                 $SellSidePartnerHourlyBids->BidsWonCounter = $RTBPinger->won_bids;
                 if ($AuctionPopo->is_second_price_auction === true) {
                     $SellSidePartnerHourlyBids->SpendTotalGross = floatval($AuctionPopo->second_price_winning_bid_price) / 1000;
                     $SellSidePartnerHourlyBids->SpendTotalPrivateExchangeGross = floatval($AuctionPopo->second_price_winning_adjusted_amount_before_private_exchange_markup_bid_price) / 1000;
                 } else {
                     $SellSidePartnerHourlyBids->SpendTotalGross = floatval($RTBPinger->winning_bid) / 1000;
                     $SellSidePartnerHourlyBids->SpendTotalPrivateExchangeGross = floatval($RTBPinger->winning_amount_before_private_exchange_markup_bid) / 1000;
                 }
                 $spend_total_gross = $SellSidePartnerHourlyBids->SpendTotalGross;
                 $spend_total_private_exchange_gross = $SellSidePartnerHourlyBids->SpendTotalPrivateExchangeGross;
                 // Subtract Global Ad Exchange Publisher markup
                 $mark_down = floatval($SellSidePartnerHourlyBids->SpendTotalGross) * floatval($this->publisher_markup_rate);
                 $adusted_amount_before_private_exchange_markup = floatval($SellSidePartnerHourlyBids->SpendTotalGross) - floatval($mark_down);
                 $SellSidePartnerHourlyBids->SpendTotalPrivateExchangeGross = $adusted_amount_before_private_exchange_markup;
                 $spend_total_private_exchange_gross = $SellSidePartnerHourlyBids->SpendTotalPrivateExchangeGross;
                 // Subtract Private Ad Exchange Publisher markup
                 $mark_down_private_exchange = floatval($SellSidePartnerHourlyBids->SpendTotalPrivateExchangeGross) * floatval($this->private_exchange_publisher_markup_rate);
                 $adusted_amount = floatval($adusted_amount_before_private_exchange_markup) - floatval($mark_down_private_exchange);
                 $SellSidePartnerHourlyBids->SpendTotalNet = $adusted_amount;
                 $spend_total_net = $SellSidePartnerHourlyBids->SpendTotalNet;
             } else {
                 $bids_lost += $RTBPinger->lost_bids;
                 $SellSidePartnerHourlyBids->BidsLostCounter = $RTBPinger->lost_bids;
             }
         } else {
             $bid_errors++;
             $SellSidePartnerHourlyBids->BidsErrorCounter = 1;
             $error_list[] = "PartnerID: " . $RTBPinger->partner_id . " Error Message: " . $RTBPinger->ping_error_message;
         }
         \util\CachedStatsWrites::incrementSellSideBidsCounterCached($this->config, $SellSidePartnerHourlyBids);
     }
     $PublisherHourlyBids = new \model\PublisherHourlyBids();
     $PublisherHourlyBids->PublisherAdZoneID = $this->PublisherAdZoneID;
     $PublisherHourlyBids->AuctionCounter = 1;
     $PublisherHourlyBids->BidsWonCounter = $bids_won;
     $PublisherHourlyBids->BidsLostCounter = $bids_lost;
     $PublisherHourlyBids->BidsErrorCounter = $bid_errors;
     $PublisherHourlyBids->SpendTotalGross = $spend_total_gross;
     $PublisherHourlyBids->SpendTotalPrivateExchangeGross = $spend_total_private_exchange_gross;
     $PublisherHourlyBids->SpendTotalNet = $spend_total_net;
     if ($AuctionPopo->ImpressionType == "video" && $AuctionPopo->auction_was_won && \util\ParseHelper::isVastURL($AuctionPopo->winning_ad_tag) === true) {
         /*
          * If this is a video impression record the winning auction 
          * information when the VASTAdTagURI is loaded from the 
          * publisher's video player.
          */
         $PublisherHourlyBidsCopy = new \model\PublisherHourlyBids();
         $PublisherHourlyBidsCopy->PublisherAdZoneID = $this->PublisherAdZoneID;
         $PublisherHourlyBidsCopy->AuctionCounter = 0;
         $PublisherHourlyBidsCopy->BidsWonCounter = 1;
         $PublisherHourlyBidsCopy->BidsLostCounter = 0;
         $PublisherHourlyBidsCopy->BidsErrorCounter = 0;
         $PublisherHourlyBidsCopy->SpendTotalGross = $spend_total_gross;
         $PublisherHourlyBidsCopy->SpendTotalPrivateExchangeGross = $spend_total_private_exchange_gross;
         $PublisherHourlyBidsCopy->SpendTotalNet = $spend_total_net;
         $AuctionPopo->vast_publisher_imp_obj = $PublisherHourlyBidsCopy;
         /*
          * Record the general impression auction information here now.
          */
         $PublisherHourlyBids->BidsWonCounter = 0;
         $PublisherHourlyBids->SpendTotalGross = 0;
         $PublisherHourlyBids->SpendTotalPrivateExchangeGross = 0;
         $PublisherHourlyBids->SpendTotalNet = 0;
     }
     \util\CachedStatsWrites::incrementPublisherBidsCounterCached($this->config, $PublisherHourlyBids);
     $log_header = "----------------------------------------------------------------\n";
     $log_header .= "NEW BID RESPONSE, WEBSITE: " . $this->WebDomain . ", PubZoneID: " . $this->PublisherAdZoneID . ", AD: " . $this->AdName;
     \rtbsellv22\RtbSellV22Logger::get_instance()->log[] = $log_header;
     $log_header = "NEW BID RESPONSE, WEBSITE: " . $this->WebDomain . ", PubZoneID: " . $this->PublisherAdZoneID . ", AD: " . $this->AdName;
     \rtbsellv22\RtbSellV22Logger::get_instance()->min_log[] = $log_header;
     $log = "----------------------------------------------------------------";
     $log .= "\nDate: " . date('m-d-Y H:i:s');
     $log .= "\nTotal Bids: " . $bids_total;
     $log .= "\nBids Won: " . $bids_won;
     $log .= "\nBids Lost: " . $bids_lost;
     $log .= "\nBid Errors: " . $bid_errors;
     $log .= "\nError List: " . implode(",", $error_list);
     foreach ($this->skipped_partner_list as $skipped_partner) {
         $log .= "\nSkipped Partner: " . $skipped_partner;
     }
     $log .= "\n----------------------------------------------------------------\n";
     \rtbsellv22\RtbSellV22Logger::get_instance()->log[] = $log;
     \rtbsellv22\RtbSellV22Logger::get_instance()->min_log[] = $log;
 }
Пример #2
0
 private function track_video_impression($config, $banner_request)
 {
     $error_message = "Error";
     $ap_param = $this->getRequest()->getQuery('ap');
     $pp_param = $this->getRequest()->getQuery('pp');
     if (empty($ap_param) || empty($pp_param)) {
         die($error_message);
     }
     $encryption_key = $config['settings']['rtb']['encryption_key'];
     $ap = $this->decrypt_vast_auction_params($encryption_key, $ap_param);
     if (empty($ap)) {
         die($error_message);
     }
     $pp = $this->decrypt_vast_auction_params($encryption_key, $pp_param);
     if (empty($ap) || !$pp instanceof \model\PublisherHourlyBids) {
         die($error_message);
     }
     $minutes_to_expire = 5;
     if (intval($ap["auction_timestamp"]) < time() - 60 * $minutes_to_expire) {
         // timestamp token expired
         die($error_message);
     }
     \util\CachedStatsWrites::incrementPublisherBidsCounterCached($config, $pp);
     echo 'tracking_id: ' . $pp->PublisherAdZoneID . '_' . md5($pp_param . $ap_param);
     exit;
 }