디버그 모드에서 vBulletin이 SQL 프로파일 러를 사용하는 방법을 알고 있습니까? 내 웹 응용 프로그램 용으로 구축하는 방법은 무엇입니까? 프로 시저 PHP로 만들어졌습니다.PHP + MySQL 프로파일 러
감사합니다.
디버그 모드에서 vBulletin이 SQL 프로파일 러를 사용하는 방법을 알고 있습니까? 내 웹 응용 프로그램 용으로 구축하는 방법은 무엇입니까? 프로 시저 PHP로 만들어졌습니다.PHP + MySQL 프로파일 러
감사합니다.
http://dev.mysql.com/tech-resources/articles/using-new-query-profiler.html
당신이 알 어떤 쿼리 후 SQL 프로파일 정보를 얻을 수있는 방법 위의 링크 링크.
구현하는 가장 좋은 방법은 데이터베이스 클래스를 만들고 위의 링크에 표시된대로 쿼리 로깅 및 해당 정보를 활성화하는 "프로필"플래그를 갖도록하는 것입니다.
예 :
Class dbthing{
var $profile = false;
function __construct($profile = false){
if($profile){
$this->query('set profiling=1');
$this->profile = true;
}
...
}
function query($sql, $profile_this == false){
...
if($this->profile && !$profile_this)
$this->query("select sum(duration) as qtime from information_schema.profiling where query_id=1", true);
... // store the timing here
}
}
내가 arround에 프로파일 래퍼를 배치 할 수있는 데이터베이스 연결 래퍼를 사용합니다. 이렇게하면 기본 커넥터 클래스를 변경하지 않고도 래퍼를 삭제하거나 변경할 수 있습니다. 10 초 임계 값 프로파일 링
class dbcon {
function query($q) {}
}
class profiled_dbcon()
{
private $dbcon;
private $thresh;
function __construct(dbcon $d, $thresh=false)
{
$this->dbcon = $d;
$this->thresh = $thresh;
}
function queury($q)
{
$begin = microtime(true);
$result = this->dbcon->query();
$end = microtime(true);
if($this->thresh && ($end - $begin) >= $this->thresh) error_log(...);
return $result;
}
}
:
$dbc = new profiled_dbcon(new dbcon(), 10);
내가 가지고있는이 시대는 무엇인지()의 error_log를 사용합니다. 데이터베이스 서버 성능에 영향을주는 쿼리 성능을 다시 데이터베이스 서버에 기록하지 않습니다. 웹 헤드가 그 영향을 흡수하도록하는 것이 좋습니다.
비록 늦어도 Open PHP MyProfiler이이를 달성하는 데 도움이되며 코드에서 기능 섹션을 추출 할 수 있습니다.
microtime()이 서버 시간을 제공하고 실제 작업 시간 (또는 HD 액세스 시간 등)이 아닌 정확한 시간을 제공하기 때문에 정확한 결과를 얻지 못합니다. mysql 내장 함수를 사용하는 것이 가장 좋습니다. 프로세스가 얼마나 오래 걸릴지 –
@mike v : 아주 좋은 지적. mysql 프로파일 러 기능에 대한 링크를 게시 해 주셔서 감사합니다. 자세한 내용을 알게되어 기쁩니다. –
자신 만의 작품을 제작하는 것이 아닙니다. 왜 mysql 느린 쿼리 로그를 사용하지 않습니까? – starmonkey