private static function send_mail($server_cfg, $game_cfg, $report) { $to = ""; $random_hash = md5(date('r', time())); $mime_boundary = "==Multipart_Boundary_x{$random_hash}x"; if ($game_cfg === null) { $subject = "Instance Utilization Summary"; $bcc = $server_cfg["instance_report_mail_recipients"]; $headers = 'From: ' . $server_cfg["sender"] . "\r\n" . 'Bcc: ' . $bcc . "\r\n" . "Content-Type: multipart/mixed;" . " boundary=\"{$mime_boundary}\"" . 'X-Mailer: PHP/' . phpversion(); $HTMLMessage = file_get_contents($report); $tidy = new tidy(); $tidy->parseString($HTMLMessage); $tidy->cleanRepair(); $message = "\n\n" . "--{$mime_boundary}\n" . "Content-Type:text/html; charset=\"iso-8859-1\"\n" . "Content-Transfer-Encoding: 7bit\n\n" . $tidy . "\n\n"; $reportClass = new ReportCollector($server_cfg); $data = $reportClass->generateCSV(); $message .= "--{$mime_boundary}\n" . "Content-Type:text/csv; \n" . " name=zPerfmonUtilTrend_" . date("MjY") . ".csv \n" . "Content-Transfer-Encoding: 7bit\n\n" . $data . "\n\n" . "--{$mime_boundary}--\n"; mail($to, $subject, $message, $headers); } else { $subject = "Instance Utilization report for {$game_cfg['name']}"; $bcc = $game_cfg["instance_report_mail_recipients"]; $headers = 'From: ' . $server_cfg["sender"] . "\r\n" . 'Bcc: ' . $bcc . "\r\n" . 'Content-Type: text/HTML' . "\r\n" . 'X-Mailer: PHP/' . phpversion(); $message = file_get_contents($report); $tidy = new tidy(); $tidy->parseString($message); $tidy->cleanRepair(); mail($to, $subject, $tidy, $headers); } }
function collectConditions() { $collector = new ReportCollector(); $collector->addToCondsFromRequest(TRUE, "add_user_save_id"); $collector->addToCondsIfNotEq("type", "All"); $collector->addToCondsFromRequest(TRUE, "date_from", "date_from_unit"); $collector->addToCondsFromRequest(TRUE, "date_to", "date_to_unit"); $collector->addToCondsFromRequest(TRUE, "user_id"); $collector->addToCondsFromRequest(TRUE, "username"); $collector->addToCondsIfNotEq("admin", "All"); return $collector->getConds(); }
function print_instances_detail($game) { $reportDataCollector = new ReportCollector($GLOBALS['server_cfg']); $tbl_struct = array(array("label" => "Instance Class", "bold" => 1), array("label" => "Total Instances", "align" => "right"), array("label" => "DAU per Instance", "align" => "right"), array("label" => "Optimal Instance <br/> count<sup>2</sup>", "align" => "right"), array("label" => "% Slack<sup>3</sup>", "align" => "right")); $tbl_data = array(); global $instance_util_obj; $instances = $instance_util_obj->get_instances_detail_data(); $total = $instance_util_obj->get_game_summary(); $dau = $instance_util_obj->get_dau(); $instances = sort_by_instance_count($instances); $instances["TOTAL"] = $total; //add total data to the bottom $i = 0; foreach ($instances as $class => $data) { if ($data["count"] == null || $data["count"] == 0) { //if instance count is 0, don't show in report continue; } $dau_per_instance = round($dau / $data["count"]); if ($data["optimal_instance_count"] == 0) { $slack = NA; $optimal_count = NA; } else { $slack = number_format(($data["count"] - $data["optimal_instance_count"]) * 100 / $data["count"], 2) . "%"; $optimal_count = number_format($data["optimal_instance_count"]); } /* * Review Comment :- create a function for this * not creating a function as the no of parameters are too many * and creating a fn would not be helpful */ if (isset($_GET['store_report']) && $_GET['store_report'] == 'true') { $report_data['class_name'] = $class; $report_data['game'] = $game; $report_data['total_instance'] = $data["count"]; $report_data['DAU_per_instance'] = $dau_per_instance; $report_data['optimal_instance_count'] = $data["optimal_instance_count"]; if ($data["count"] > 0) { $report_data['slack_per'] = ($data["count"] - $data["optimal_instance_count"]) * 100 / $data["count"]; } else { $report_data['slack_per'] = 0; } $reportDataCollector->insertInstanceClassSummary($report_data); } $tbl_data[$i][] = $class; //instance class $tbl_data[$i][] = number_format($data["count"]); //instances $tbl_data[$i][] = number_format($dau_per_instance); //$tbl_data[$i][] = number_format($data["cost"]); //total cost $tbl_data[$i][] = $optimal_count; //recommended instance count $tbl_data[$i][] = format_slack($slack); $i++; } $markup = ReportTableMarkup::get_table_markup($tbl_struct, $tbl_data); echo $markup; }
function get_games_summary_info($games, $zc = 0) { $reportDataCollector = new ReportCollector($GLOBALS['server_cfg']); $dataArr = array(); $cost_per_user_min = 1000; foreach ($games as $game) { $instance_util_obj = new InstanceUtilAdapter($game); $data = $instance_util_obj->get_game_summary(); if ($data["rps"] == 0 or $data["dau"] === NULL) { //dont show games whose data is unavailable continue; } $cost_per_user = round($data["cost"] / $data["dau"], 4); if ($cost_per_user > 0) { $cost_per_user_min = min($cost_per_user, $cost_per_user_min); } $slack = round(($data["count"] - $data["optimal_instance_count"]) * 100 / $data["count"], 2); $dataArr[$game] = array("count" => $data["count"], "rps" => round($data["rps"]), "cost" => $data["cost"], "dau" => $data["dau"], "dau_per_instance" => round($data["dau"] / $data["count"]), "cost_per_user" => $cost_per_user, "optimal_instance_count" => $data["optimal_instance_count"], "slack" => $slack); /* * Review Comment :- create a function for this * not creating a function as the no of parameters are too many * and creating a fn would not be helpful */ if ($_GET['store_report'] == 'true') { // inserting data in the report instance_utilization table $data_utilization['game'] = $game; $data_utilization['total_instance'] = $data["count"]; $data_utilization['DAU'] = $data["dau"]; $data_utilization['DAU_per_instance'] = round($data["dau"] / $data["count"]); $data_utilization['optimal_instance_count'] = $data["optimal_instance_count"]; $data_utilization['slack_per'] = $slack; $data_utilization['cloud_id'] = $zc; $reportDataCollector->insertInstanceUtilization($data_utilization); } } $dataArr = sort_by_dau($dataArr); global $server_cfg; if (isset($server_cfg["hostname"])) { $hostname = $server_cfg["hostname"]; } else { $hostname = "*****@*****.**"; } return $dataArr; }
function collectConditions() { $collector = new ReportCollector(); $collector->addToCondsFromRequest(TRUE, "user_ids"); $collector->addToCondsIfNotEq("action", "All"); $collector->addToCondsIfNotEq("admin", "All"); $collector->addToCondsFromRequest(TRUE, "change_time_from", "change_time_from_unit"); $collector->addToCondsFromRequest(TRUE, "change_time_to", "change_time_to_unit"); $collector->addToCondsFromRequest(TRUE, "per_user_credit", "per_user_credit_op"); $collector->addToCondsFromRequest(TRUE, "admin_credit", "admin_credit_op"); $collector->addToCondsFromRequest(FALSE, "show_total_per_user_credit"); $collector->addToCondsFromRequest(FALSE, "show_total_admin_credit"); $collector->addToCondsFromRequest(TRUE, "remote_addr"); return $collector->getConds(); }
function collectConditions() { $collector = new ReportCollector(); $collector->addToCondsFromRequest(TRUE, "user_ids"); $collector->addToCondsIfNotEq("service", "All"); $collector->addToCondsIfNotEq("successful", "All"); $collector->addToCondsIfNotEq("owner", "All"); $collector->addToCondsFromRequest(TRUE, "login_time_from", "login_time_from_unit"); $collector->addToCondsFromRequest(TRUE, "login_time_to", "login_time_to_unit"); $collector->addToCondsFromRequest(TRUE, "logout_time_from", "logout_time_from_unit"); $collector->addToCondsFromRequest(TRUE, "logout_time_to", "logout_time_to_unit"); $collector->addToCondsFromRequest(TRUE, "credit_used", "credit_used_op"); $collector->addToCondsFromRequest(FALSE, "show_total_credit_used"); $collector->addToCondsFromRequest(FALSE, "show_total_duration"); $collector->addToCondsFromCheckBoxRequest("ras_", "ras_ip"); return $collector->getConds(); }