Не мисля, че има какво толкова да се обяснява затова направо по същество.
В. Първо какво е dhs_mysql_profile_debuger?
О. Това е проста php функция (не е вградена както става ясно по- долу), чрез която може да се следи процесорното време, паметта и времето за изпълнение на всяка заявка.
В. Как работи dhs_mysql_profile_debuger?
О. Цялостно е базирана на профилинга в MySQL
В. Може ли да работи постоянно в сайта ми?
О. Може(зависи от посещаемостта и натовареността), но определено не е желателно. Най- правилно е да се ползва за определено време с цел да се придобие информация какво натоварване правят заявките X. Един вид да ни се покажат пробойните в лодката които да запушем.
Инсталиране на dhs_mysql_profile_debuger
1. Създване на таблица в която да се съхраняват данните
drop table dhs_mysql_profile_debuger;
CREATE TABLE `dhs_mysql_profile_debuger` (
`qid` int(7) NOT NULL auto_increment,
`ddate` datetime NOT NULL,
`query` varchar(200) not null,
`query_duration` varchar(10) NOT NULL,
`cpu_duration` varchar(10) NOT NULL,
`cpu_user` varchar(10) NOT NULL,
`cpu_system` varchar(10) NOT NULL,
`mem_duration` varchar(10) NOT NULL,
PRIMARY KEY (`qid`)
) ENGINE=MyISAM;
2. При свързване към базата данни да се сетне profiling=1
Пример: mysql_query('SET profiling = 1;', $db);
3. Include на функцията dhs_mysql_profile_debuger
#dhstudio mysql profile debuger written by amri
function dhs_mysql_profile_debuger()
{
$ddate=date('Y-m-d H:i:s');$query="SHOW PROFILES";
$result = mysql_query($query);
while($row = mysql_fetch_array($result))
{
$query_ID="{$row[0]}";
$Duration="{$row[1]}";
$Query=addslashes("{$row[2]}");$query2="SHOW PROFILE CPU FOR QUERY $query_ID;";
$result2 = mysql_query($query2);
unset($cpu_duration);unset($cpu_user);unset($cpu_system);unset($mem_duration);
while($row2 = mysql_fetch_array($result2))
{
$cpu_duration+=number_format("{$row2[1]}", 6, '.', ' ');
$cpu_user+=number_format("{$row2[2]}", 6, '.', ' ');
$cpu_system+=number_format("{$row2[3]}", 6, '.', ' ');
};$query2="SHOW PROFILE MEMORY FOR QUERY $query_ID;";
$result2 = mysql_query($query2);
while($row2 = mysql_fetch_array($result2))
{
$mem_duration=number_format($mem_duration+"{$row2[1]}", 6, '.', ' ');
};$mass_insert="$mass_insert,('$ddate','$Query','$Duration','$cpu_duration','$cpu_user','$cpu_system','$mem_duration')";
if($mass_insert{0} == ",")$mass_insert=substr($mass_insert,1);
};$query_insert="insert into dhs_mysql_profile_debuger (ddate,query,query_duration,cpu_duration,cpu_user,cpu_system,mem_duration) VALUES $mass_insert;";
$result_insert = mysql_query($query_insert);
};
4. Извикване на функцията dhs_mysql_profile_debugerв в края на всеки php файл които ще се следи
dhs_mysql_profile_debuger();#DH Studio mysql profile debuger
Извеждане на статистика за заявките
1. Извеждане на най- натоварващите CPU заявки
mysql> select * from dhs_mysql_profile_debuger order by cpu_duration desc;
2. Извеждане на най- натоварващите MEM заявки
Инсталиране и използване на dhs_mysql_profile_debuger,mysql> select * from dhs_mysql_profile_debuger order by mem_duration desc;
Това ми помогна