function process_xhprof_uploads($server_cfg, $game_cfg, $time_slots = '*') { $unzipping_command = $server_cfg["unzipping_command"]; $upload_processing_command = $server_cfg["upload_processing_command"]; $root_upload_directory = sprintf($server_cfg["root_upload_directory"], $game_cfg["name"]); $profiles_markers = glob("{$root_upload_directory}/{$time_slots}/" . $server_cfg['profile_upload_directory'] . "/.profiles", GLOB_BRACE); if (empty($profiles_markers)) { error_log("There is no profiles to process for timeslots {$time_slots}\n", 3, sprintf($server_cfg['log_file'], $game_cfg['name'])); $game_cfg['logger']->log("profile_pre_processor", "There is no profiles to process \n\t\t\t\t\t\t\t\t for timeslots {$time_slots}", Logger::INFO); return; } foreach ($profiles_markers as $marker) { $profile_upload_directory = dirname($marker); error_log("profile_upload_directory : " . $profile_upload_directory . "\n", 3, sprintf($server_cfg['log_file'], $game_cfg['name'])); $timeslot = (int) basename(dirname($profile_upload_directory)); $file_list = scandir("{$root_upload_directory}/{$timeslot}/" . $server_cfg['profile_upload_directory']); $ip_list = array(); if (!isset($game_cfg["id"])) { foreach ($file_list as $file) { $pattern = "([0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+)"; $filename = basename($file); if (preg_match($pattern, $filename) == 0) { continue; } $breakup = split("__", $filename); if (count($breakup) == 1) { continue; } $ip = $breakup['1']; if (!in_array($ip, $ip_list)) { array_push($ip_list, $ip); } } } $timestamp = (int) (basename(dirname($profile_upload_directory)) * 1800); $unzip = implode(" ", array($unzipping_command, $game_cfg["name"], $profile_upload_directory, $timestamp)); $process = implode(" ", array($upload_processing_command, "-g {$game_cfg['name']} ", "-d {$profile_upload_directory} ", "-t {$timestamp}")); error_log("pre-processing {$profile_upload_directory}\n", 3, sprintf($server_cfg['log_file'], $game_cfg['name'])); $game_cfg['logger']->log("profile_pre_processor", "pre-processing \n\t\t\t\t\t {$profile_upload_directory}/", Logger::INFO); $retval = null; // refs will start failing in 5.3.x if not declared if (!isset($game_cfg["id"])) { $output = system($unzip, $retval); if ($retval != 0) { error_log("Couldn`t Unzip files from {$profile_upload_directory}/\n\t\t\t\t\t {$dir_timestamp}/ \n", 3, sprintf($server_cfg['log_file'], $game_cfg['name'])); continue; } splitarraywise($server_cfg, $ip_list, $game_cfg["name"], basename(dirname($profile_upload_directory))); } echo "{$process}\n"; $output = system($process, $retval); if ($retval != 0) { error_log("processing files from: {$profile_upload_directory}/{$dir_timestamp}/ \n\t\t\t\t \n", 3, sprintf($server_cfg['log_file'], $game_cfg['name'])); error_log("xhprof post-processing failed: {$output}\n", 3, sprintf($server_cfg['log_file'], $game_cfg['name'])); $game_cfg['logger']->log("profile_pre_processor", "xhprof post-processing for \n\t\t\t\t\t\t {$profile_upload_directory}/{$dir_timestamp}/ failed", Logger::ERR); continue; } // ensure the functions analytics gets run off this new xhprof_tbz touch("{$profile_upload_directory}/.profiles"); touch("{$profile_upload_directory}/.functions"); // ensure that the compression will run for this directory touch("{$profile_upload_directory}/.compress"); } }
function process_uploads($server_cfg, $game_cfg, $time_slots = '*') { $game_name = $game_cfg['name']; $root_upload_directory = sprintf($server_cfg["root_upload_directory"], $game_name); $profiles_markers = glob("{$root_upload_directory}/{$time_slots}/" . $server_cfg['profile_upload_directory'] . "/.profiles", GLOB_BRACE); if (empty($profiles_markers)) { echo "no profile markers\n"; return; } foreach ($profiles_markers as $marker) { $timeslot = (int) basename(dirname(dirname($marker))); $retval = null; // refs will start failing in 5.3.x if not declared $output = null; $cmd = create_command("unzipping_command", $server_cfg, $game_cfg, $timeslot); //echo $cmd."\n"; $out = exec($cmd, $output, $retval); if ($retval != 0) { echo "Couldn`t unzip " . dirname($marker) . "\n"; continue; } $ip_list = explode(",", $output[0]); //print_r($ip_list); if (count($ip_list) > 1 or $ip_list[0] !== "") { $grouped_ips = splitarraywise($server_cfg, $ip_list, $game_name, $timeslot); process_profiles($server_cfg, $game_cfg, $ip_list, $grouped_ips, $timeslot); } } }