suffix; if (!empty($this->dir)) { $file = $this->dir . "/" . $file; } return $file; } public function __construct($dir = null) { // if user hasn't passed a directory location, // we use the xhprof.output_dir ini setting // if specified, else we default to the directory // in which the error_log file resides. if (empty($dir)) { $dir = ini_get("xhprof.output_dir"); if (empty($dir)) { // some default that at least works on unix... $dir = "/tmp"; xhprof_error("Warning: Must specify directory location for XHProf runs. ". "Trying {$dir} as default. You can either pass the " . "directory location as an argument to the constructor ". "for XHProfRuns_Default() or set xhprof.output_dir ". "ini param."); } } $this->dir = $dir; } public function get_run($run_id, $type, &$run_desc) { $file_name = $this->file_name($run_id, $type); if (!file_exists($file_name)) { xhprof_error("Could not find file $file_name"); $run_desc = "Invalid Run Id = $run_id"; return null; } $contents = file_get_contents($file_name); $run_desc = "XHProf Run (Namespace=$type)"; return unserialize($contents); } public function save_run($xhprof_data, $type, $run_id = null) { // Use PHP serialize function to store the XHProf's // raw profiler data. $xhprof_data = serialize($xhprof_data); if ($run_id === null) { $run_id = $this->gen_run_id($type); } $file_name = $this->file_name($run_id, $type); $file = fopen($file_name, 'w'); if ($file) { fwrite($file, $xhprof_data); fclose($file); } else { xhprof_error("Could not open $file_name\n"); } // echo "Saved run in {$file_name}.\nRun id = {$run_id}.\n"; return $run_id; } function list_runs() { if (is_dir($this->dir)) { echo "