facebook twitter hatena line email

「Php/速度改善/XHProf/解析画面設置」の版間の差分

提供: 初心者エンジニアの簡易メモ
移動: 案内検索
(ページの作成:「 ==解析UI設置== *xhprof_html *xhprof_lib ==XHProfの使い方== xhprof_enable(); // 処理 xhprof_disable(); ==コード例 †== xhprof/XhprofCustom.php <?php...」)
 
(コード例 †)
 
行46: 行46:
 
     register_shutdown_function(array('XhprofCustom', 'finish'));
 
     register_shutdown_function(array('XhprofCustom', 'finish'));
 
  }
 
  }
 +
 +
==xhprof_htmlを公開領域からアクセスできるように==
 +
ln -s /usr/local/src/xhprof-0.9.4/xhprof_html /var/www/html/xhprof_html
 +
 
==以下エラーが出るときはxdebugなどのxhprof以外のプロファイラーをuninstallする==
 
==以下エラーが出るときはxdebugなどのxhprof以外のプロファイラーをuninstallする==
 
  Fatal error: Class ~ not found
 
  Fatal error: Class ~ not found

2018年5月17日 (木) 16:48時点における最新版

解析UI設置

  • xhprof_html
  • xhprof_lib

XHProfの使い方

xhprof_enable();
// 処理
xhprof_disable();

コード例 †

xhprof/XhprofCustom.php

<?php
class XhprofCustom
{
  static private $_starttime;
  public function start()
  {
    if ($_SERVER['REQUEST_URI'] == "/favicon.ico") return;
    xhprof_enable();
    self::$_starttime = microtime(true);
  }
  // stop profiler
  public function finish()
  {
    if ($_SERVER['REQUEST_URI'] == "/favicon.ico") return;
    $xhprof_data = xhprof_disable();
    $XHPROF_ROOT = dirname(__FILE__); // xhprofをインストールしたディレクトリ
    $XHPROF_SOURCE_NAME = 'app_name';            // アプリ名とか識別する名前
    include_once $XHPROF_ROOT . "/xhprof_lib/utils/xhprof_lib.php";
    include_once $XHPROF_ROOT . "/xhprof_lib/utils/xhprof_runs.php";
    $xhprof_runs = new XHProfRuns_Default();
    $run_id = $xhprof_runs->save_run($xhprof_data, $XHPROF_SOURCE_NAME);
    $xhprof_log_file = "xhprof.html";
    $xhprof_log_path = $XHPROF_ROOT.'/'.$xhprof_log_file;
    $time = floor((microtime(true) - self::$_starttime) * 100000) / 100;
    // ビューアへのリンクログ
    file_put_contents($xhprof_log_path, date("Y-m-d H:i:s")." {$time} <a href=\"./xhprof_html/index.php?run=$run_id&source=$XHPROF_SOURCE_NAME\">{$_SERVER['REQUEST_URI']}</a><br />\n", FILE_APPEND);
  }
}

index.php

if (file_exists(dirname(__FILE__) . '/xhprof/XhprofCustom.php')) {
    require_once dirname(__FILE__) . '/xhprof/XhprofCustom.php';
    XhprofCustom::start();
    register_shutdown_function(array('XhprofCustom', 'finish'));
}

xhprof_htmlを公開領域からアクセスできるように

ln -s /usr/local/src/xhprof-0.9.4/xhprof_html /var/www/html/xhprof_html

以下エラーが出るときはxdebugなどのxhprof以外のプロファイラーをuninstallする

Fatal error: Class ~ not found