mirror of
https://github.com/midoks/mdserver-web.git
synced 2026-10-18 23:45:52 +08:00
兼容php5.2
This commit is contained in:
@@ -31,31 +31,30 @@
|
||||
*/
|
||||
interface iXHProfRuns {
|
||||
|
||||
/**
|
||||
* Returns XHProf data given a run id ($run) of a given
|
||||
* type ($type).
|
||||
*
|
||||
* Also, a brief description of the run is returned via the
|
||||
* $run_desc out parameter.
|
||||
*/
|
||||
public function get_run($run_id, $type, &$run_desc);
|
||||
/**
|
||||
* Returns XHProf data given a run id ($run) of a given
|
||||
* type ($type).
|
||||
*
|
||||
* Also, a brief description of the run is returned via the
|
||||
* $run_desc out parameter.
|
||||
*/
|
||||
public function get_run($run_id, $type, &$run_desc);
|
||||
|
||||
/**
|
||||
* Save XHProf data for a profiler run of specified type
|
||||
* ($type).
|
||||
*
|
||||
* The caller may optionally pass in run_id (which they
|
||||
* promise to be unique). If a run_id is not passed in,
|
||||
* the implementation of this method must generated a
|
||||
* unique run id for this saved XHProf run.
|
||||
*
|
||||
* Returns the run id for the saved XHProf run.
|
||||
*
|
||||
*/
|
||||
public function save_run($xhprof_data, $type, $run_id = null);
|
||||
/**
|
||||
* Save XHProf data for a profiler run of specified type
|
||||
* ($type).
|
||||
*
|
||||
* The caller may optionally pass in run_id (which they
|
||||
* promise to be unique). If a run_id is not passed in,
|
||||
* the implementation of this method must generated a
|
||||
* unique run id for this saved XHProf run.
|
||||
*
|
||||
* Returns the run id for the saved XHProf run.
|
||||
*
|
||||
*/
|
||||
public function save_run($xhprof_data, $type, $run_id = null);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* XHProfRuns_Default is the default implementation of the
|
||||
* iXHProfRuns interface for saving/fetching XHProf runs.
|
||||
@@ -67,98 +66,102 @@ interface iXHProfRuns {
|
||||
*/
|
||||
class XHProfRuns_Default implements iXHProfRuns {
|
||||
|
||||
private $dir = '';
|
||||
private $suffix = 'xhprof';
|
||||
private $dir = '';
|
||||
private $suffix = 'xhprof';
|
||||
|
||||
private function gen_run_id($type) {
|
||||
return uniqid();
|
||||
}
|
||||
|
||||
private function file_name($run_id, $type) {
|
||||
|
||||
$file = "$run_id.$type." . $this->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)) {
|
||||
|
||||
$dir = sys_get_temp_dir();
|
||||
|
||||
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;
|
||||
private function gen_run_id($type) {
|
||||
return uniqid();
|
||||
}
|
||||
|
||||
$contents = file_get_contents($file_name);
|
||||
$run_desc = "XHProf Run (Namespace=$type)";
|
||||
return unserialize($contents);
|
||||
}
|
||||
private function file_name($run_id, $type) {
|
||||
|
||||
public function save_run($xhprof_data, $type, $run_id = null) {
|
||||
$file = "$run_id.$type." . $this->suffix;
|
||||
|
||||
// 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);
|
||||
if (!empty($this->dir)) {
|
||||
$file = $this->dir . "/" . $file;
|
||||
}
|
||||
return $file;
|
||||
}
|
||||
|
||||
$file_name = $this->file_name($run_id, $type);
|
||||
$file = fopen($file_name, 'w');
|
||||
public function __construct($dir = null) {
|
||||
|
||||
if ($file) {
|
||||
fwrite($file, $xhprof_data);
|
||||
fclose($file);
|
||||
} else {
|
||||
xhprof_error("Could not open $file_name\n");
|
||||
// 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)) {
|
||||
|
||||
$dir = sys_get_temp_dir();
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
// echo "Saved run in {$file_name}.\nRun id = {$run_id}.\n";
|
||||
return $run_id;
|
||||
}
|
||||
public function get_run($run_id, $type, &$run_desc) {
|
||||
$file_name = $this->file_name($run_id, $type);
|
||||
|
||||
function list_runs() {
|
||||
if (is_dir($this->dir)) {
|
||||
echo "<hr/>Existing runs:\n<ul>\n";
|
||||
$files = glob("{$this->dir}/*.{$this->suffix}");
|
||||
usort($files, function($a, $b) {return filemtime($b) - filemtime($a);});
|
||||
foreach ($files as $file) {
|
||||
list($run,$source) = explode('.', basename($file));
|
||||
echo '<li><a href="' . htmlentities($_SERVER['SCRIPT_NAME'])
|
||||
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_callback($a, $b) {
|
||||
return filemtime($b) - filemtime($a);
|
||||
}
|
||||
|
||||
function list_runs() {
|
||||
if (is_dir($this->dir)) {
|
||||
echo "<hr/>Existing runs:\n<ul>\n";
|
||||
$files = glob("{$this->dir}/*.{$this->suffix}");
|
||||
usort($files, 'list_runs_callback');
|
||||
foreach ($files as $file) {
|
||||
list($run, $source) = explode('.', basename($file));
|
||||
echo '<li><a href="' . htmlentities($_SERVER['SCRIPT_NAME'])
|
||||
. '?run=' . htmlentities($run) . '&source='
|
||||
. htmlentities($source) . '">'
|
||||
. htmlentities(basename($file)) . "</a><small> "
|
||||
. date("Y-m-d H:i:s", filemtime($file)) . "</small></li>\n";
|
||||
}
|
||||
echo "</ul>\n";
|
||||
}
|
||||
echo "</ul>\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user