Example #1
0
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");
    }
}
Example #2
0
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);
        }
    }
}