Man kann sich die aktive Prozessliste z.B. wie folgt anzeigen lassen:
http://www.php-faq.de/q/q-mssql-list-processes.html
In phpmyadmin kann man sich auch die Abfragen inkl. der ID anzeigen lassen. Werden die Abfragen nach Beendigung entfernt oder kann man die noch einsehen? Ich hätte gerne eine Einsicht über die Abfragen der letzten 120 Sekunden, falls das möglich ist.
Gruß
phpmyadmin Prozesse -> Liste mit alten Abfragen?
phpmyadmin Prozesse -> Liste mit alten Abfragen?
meine Foren: http://www.maxrev.de/communities.htm
Ich kaufe Dein Forum! Angebote bitte an marc at gutt punkt it
Ich kaufe Dein Forum! Angebote bitte an marc at gutt punkt it
- Gumfuzi
- Ehemaliges Teammitglied
- Beiträge: 2454
- Registriert: 26.03.2004 22:25
- Wohnort: Linz, AT
- Kontaktdaten:
Gute Frage.
Ich habe mir was gebastelt, wo ich alle SQL-Abfragen, die länger als x Sekunden (einstellbar) dauern, in eine logdatei (pro tag eine) am FTP speichert inkl. Usernamen, SQL-Befehl, Datei, Codezeile, etc.
Ist aber nur sinnvoll, wenn man den Sekundenwert auf mind. 5 Sekunden stellt, da sonst jede Abfrage geloggt wird - ich wollte nur die sehen, die eben lange brauchen.
Wäre aber schön, wenn es da wo in phpMyAdmin was gäbe...
Ich habe mir was gebastelt, wo ich alle SQL-Abfragen, die länger als x Sekunden (einstellbar) dauern, in eine logdatei (pro tag eine) am FTP speichert inkl. Usernamen, SQL-Befehl, Datei, Codezeile, etc.
Ist aber nur sinnvoll, wenn man den Sekundenwert auf mind. 5 Sekunden stellt, da sonst jede Abfrage geloggt wird - ich wollte nur die sehen, die eben lange brauchen.
Wäre aber schön, wenn es da wo in phpMyAdmin was gäbe...
Ich habe komischerweise manchmal Abfragen, die dauern bis zu 30 Sekunden.. aber ohne Inhalt.. also da steht dann immer nur "sleep". Daher würde ich mal gerne wissen, ob man an Hand der eigentlichen Abfrage eine Regelmäßigkeit erkennt.
Wie machst Du das denn mit den Abfragen, per PHP Script oder was serverbasierendes?
Wie machst Du das denn mit den Abfragen, per PHP Script oder was serverbasierendes?
meine Foren: http://www.maxrev.de/communities.htm
Ich kaufe Dein Forum! Angebote bitte an marc at gutt punkt it
Ich kaufe Dein Forum! Angebote bitte an marc at gutt punkt it
- Gumfuzi
- Ehemaliges Teammitglied
- Beiträge: 2454
- Registriert: 26.03.2004 22:25
- Wohnort: Linz, AT
- Kontaktdaten:
php-basierend, mittels timer bei jeder im Forum ausgeführten Abfrage - also innerhalb der SQL-Funktion.
im Footer werden dann die einzelnen Abfragen, die eben länger als x Sekunden gedauert haben, izusammengefasst und in eine Logdatei geschrieben.
So sieht dann die Logdatei aus:
Wenn innerhalb eines Seitenaufrufes mehrere SQL-Abfragen über der Zeit waren, dann kommt der Block "Zeitpunkt" mehrmals innerhalb eines Block des Users.
Die Idee kam daher, daß ich zwar eine Zeit hatte, wie lange der Seitenaufbau dauerte mit den %-Anteil alle SQL-Abfragen. Ich wollte aber eben wissen, welche Abfrage da so bremst.
Wobei man Einzelfälle nicht berücksichtigen kann, da es auch immer darauf an kommt, wieviele User exakt zur gleichen Zeit SQL-Abfragen machen bzw. noch sinnloser ist es bei Shared-Servern.
Wenn interesse besteht, kann ich mal nachschauen, wie die Codeänderungen aussehen und hier porten.
im Footer werden dann die einzelnen Abfragen, die eben länger als x Sekunden gedauert haben, izusammengefasst und in eine Logdatei geschrieben.
So sieht dann die Logdatei aus:
(sensible Daten wurden hier verändert)######################### Anfang SQL-Log User: xxxxx (IP: xxx.xxx.xxx.xxx) ##############################
### aufgerufene Seite: /phpBB2/statistics.php
### gekommen von: http://www.irgendeineseite.de/phpBB2/vi ... p?p=129496
### Browser: Mozilla/5.0 (Windows; U; WinNT4.0; de-AT; rv:1.4.1) Gecko/20031008
################## Zeitpunkt: 26.04.2006-07:26
### Datei: stat_modules/top_words/module.php
### Zeile: 86
### Zeit: 5.32241
### Abfrage: SELECT COUNT( swm.word_id ) word_count, swm.word_id word_id, swl.word_text word_text FROM phpbb_search_wordmatch swm, phpbb_search_wordlist swl WHERE swm.word_id = swl.word_id GROUP BY swm.word_id ORDER BY word_count DESC LIMIT 250
################## Ende Zeitpunkt ###
######################### Ende SQL-Log User: xxxxx ##############################
######################### Anfang SQL-Log User: Anonymous (IP: xxx.xxx.xxx.xxx) ##############################
### aufgerufene Seite: /phpBB2/viewtopic.php?t=3340&highlight=&
### gekommen von: http://images.google.de/imgres?imgurl=h ... eseite.de/...
### Browser: Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.0.2) Gecko/20060308 Firefox/1.5.0.2
################## Zeitpunkt: 26.04.2006-13:00
### Datei: viewtopic.php
### Zeile: 1140
### Zeit: 6.30536
### Abfrage: UPDATE phpbb_topics
SET topic_views = topic_views + 1
WHERE topic_id = 3340
################## Ende Zeitpunkt ###
######################### Ende SQL-Log User: Anonymous ##############################
######################### Anfang SQL-Log User: xxxxx (IP: xxx.xxx.xxx.xxx) ##############################
### aufgerufene Seite: /phpBB2/statistics.php
### gekommen von: http://www.irgendeineseite.de/phpBB2/se ... d=newposts
### Browser: Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; de; rv:1.8.0.2) Gecko/20060328 Firefox/1.5.0.2
################## Zeitpunkt: 26.04.2006-20:37
### Datei: stat_modules/top_words/module.php
### Zeile: 86
### Zeit: 13.13647
### Abfrage: SELECT COUNT( swm.word_id ) word_count, swm.word_id word_id, swl.word_text word_text FROM phpbb_search_wordmatch swm, phpbb_search_wordlist swl WHERE swm.word_id = swl.word_id GROUP BY swm.word_id ORDER BY word_count DESC LIMIT 250
################## Ende Zeitpunkt ###
######################### Ende SQL-Log User: xxxxx ##############################
Wenn innerhalb eines Seitenaufrufes mehrere SQL-Abfragen über der Zeit waren, dann kommt der Block "Zeitpunkt" mehrmals innerhalb eines Block des Users.
Die Idee kam daher, daß ich zwar eine Zeit hatte, wie lange der Seitenaufbau dauerte mit den %-Anteil alle SQL-Abfragen. Ich wollte aber eben wissen, welche Abfrage da so bremst.
Wobei man Einzelfälle nicht berücksichtigen kann, da es auch immer darauf an kommt, wieviele User exakt zur gleichen Zeit SQL-Abfragen machen bzw. noch sinnloser ist es bei Shared-Servern.
Wenn interesse besteht, kann ich mal nachschauen, wie die Codeänderungen aussehen und hier porten.
- Gumfuzi
- Ehemaliges Teammitglied
- Beiträge: 2454
- Registriert: 26.03.2004 22:25
- Wohnort: Linz, AT
- Kontaktdaten:
Ich habe es mal eben in einen kleinen Mod verpackt:
Code: Alles auswählen
##############################################################
## MOD Title: SQL-Log
## MOD Author: Gumfuzi (www.gumfuzi.com)
## MOD Description: Protokolliert in eine Log-Datei am Server (ohne zusätzliche SQL-Abfragen),
## sobald eine einzelne SQL-Abfrage mehr als eine einstellbare Anzahl an
## Sekunden benötigt.
## Diese Funktion kann deaktiviert werden, die Anzahl an Sekunden kann ebenso
## eingestellt werden - leider beides nicht via ACP, aber einfach im Quellcode.
## getestet auf phpBB ab Version 2.0.17
##
## MOD Version: 0.0.1
##
## Installation Level: Easy
## Installation Time: 2-4 minutes
##
## Files To Edit (2) :
## includes/page_tail.php
## db/mysql.php
##
##############################################################
## Author Notes:
## - ersetze im Code beim Einfügen in der page_tail.php das "/www/xxx/xxx/phpBB2/"
## durch Deinen Pfad zum Forum!
## - kann durch setzen der Variable "sql_log" in der page_tail.php rasch wieder
## deaktiviert werden
## - auch in der page_tail.php einstellbar: ab wieviel Sek. pro Abfrage geloggt
## werden soll (siehe Quellcode)
##
##############################################################
## MOD History:
##
## 08/05/2006- First release 0.0.1
##
##############################################################
## Before Adding This MOD To Your Forum, You Should Back Up All Files Related To This MOD
############################################################
#
#-----[ OPEN ]------------------------------------------
#
includes/page_tail.php
#
#-----[ FIND ]------------------------------------------
#
exit;
?>
#
#-----[ BEFORE, ADD ]------------------------------------------
#
# ersetze im nachstehenden Code das "/www/xxx/xxx/phpBB2/" (ohne "xYz"!) durch Deinen Pfad zum Forum!
// SQL-Log Anfang
$sql_log = 1;
$cr = chr(13).chr(10);
if ($sql_log == 1)
{
$zmtotal = $db->zmtotal;
$abfrage1 = $db->abfrage;
$abfrage = explode("xYz",$db->abfrage);
$zmteil = explode("xYz",$db->zmteil);
$zmfile = explode("xYz/www/xxx/xxx/phpBB2/",$db->zmfile);
$zmline = explode("xYz",$db->zmline);
$sl_aktuell = $_SERVER['REQUEST_URI'];
$sl_referer = $_SERVER["HTTP_REFERER"];
$sl_browser = getenv('HTTP_USER_AGENT');
$sl_ip = GetIP();
$co = 1;
$sql_log_total = '######################### Anfang SQL-Log User: ' . $userdata['username'] . ' (IP: ' .
$sl_ip . ') ##############################' . $cr;
$sql_log_total = $sql_log_total . '### aufgerufene Seite: ' . $sl_aktuell . $cr . '### gekommen von: ' .
$sl_referer . $cr . '### Browser: ' . $sl_browser . $cr;
while ($abfrage[$co] <> "")
{
if ($zmteil[$co] >= 5) # hier die Sekunden eintragen, ab wieviel Sek. pro Abfrage geloggt werden
soll!
{
$sql_log_abfrage = "";
$sql_log_abfrage = $cr .'################## Zeitpunkt: ' . date("d.m.Y-H:i",time()) . $cr;
$sql_log_abfrage = $sql_log_abfrage . '### Datei: ' . $zmfile[$co] . $cr;
$sql_log_abfrage = $sql_log_abfrage . '### Zeile: ' . $zmline[$co] . $cr;
$sql_log_abfrage = $sql_log_abfrage . '### Zeit: ' . $zmteil[$co] . $cr;
$sql_log_abfrage = $sql_log_abfrage . '### Abfrage: ' . $abfrage[$co] . $cr;
$sql_log_abfrage = $sql_log_abfrage . '################## Ende Zeitpunkt ###' . $cr;
$sql_log_total = $sql_log_total . $sql_log_abfrage . $cr;
$sql_log_ja = 1;
}
$co++;
}
$sql_log_total = $sql_log_total . '######################### Ende SQL-Log User: ' . $userdata['username'] .
' ##############################' . $cr . $cr . $cr . $cr;
if ($sql_log_ja == 1)
{
$sl_time = str_replace(".", "-", max($zmteil));
$avz = getcwd();
$dateiname = date("Y_m_d",time()) . ".txt"; # pro Tag eine Datei
# $dateiname = date("Ymd_Hi",time()) . "_" . $sl_time . "_" . $userdata['user_id'] . "_" .
rand(100,999) . ".txt"; #Jedes mal eine neue Datei
$navz = $avz . "/log_sql";
chdir($navz);
$testa = getcwd();
$abc = fopen($dateiname, a);
fwrite($abc, $sql_log_total);
fclose($abc);
chdir($avz);
}
}
// SQL-Log Ende
#
#-----[ OPEN ]------------------------------------------
#
db/mysql.php
#
#-----[ FIND ]------------------------------------------
#
//
// Base query method
//
function sql_query($query = "", $transaction = FALSE)
{
#
#-----[ AFTER, ADD ]------------------------------------------
#
// SQL-Zeitmessung Anfang
$zmtime = microtime();
$zmtime = explode(" ",$zmtime);
$zmstart = $zmtime[1] + $zmtime[0];
$abfrage = $query;
$test = debug_backtrace();
$this->zmfile .= "xYz" . $test[0]['file'];
$this->zmline .= "xYz" . $test[0]['line'];
// SQL-Zeitmessung Ende
#
#-----[ FIND ]------------------------------------------
#
// Remove any pre-existing queries
unset($this->query_result);
if($query != "")
{
$this->num_queries++;
$this->query_result = @mysql_query($query, $this->db_connect_id);
}
if($this->query_result)
{
unset($this->row[$this->query_result]);
unset($this->rowset[$this->query_result]);
#
#-----[ AFTER, ADD ]------------------------------------------
#
// SQL-Zeitmessung Anfang
$zmtime = microtime();
$zmtime = explode(" ",$zmtime);
$zmende = $zmtime[1] + $zmtime[0];
$zmtotal = round(($zmende - $zmstart), 5);
$this->zmtotal += $zmtotal;
$this->zmteil .= "xYz" . $zmtotal;
$this->abfrage .= "xYz" . $abfrage;
// SQL-Zeitmessung Ende
#
#-----[ FIND ]------------------------------------------
#
return $this->query_result;
}
else
{
#
#-----[ AFTER, ADD ]------------------------------------------
#
// SQL-Zeitmessung Anfang
$zmtime = microtime();
$zmtime = explode(" ",$zmtime);
$zmende = $zmtime[1] + $zmtime[0];
$zmtotal = round(($zmende - $zmstart), 5);
$this->zmtotal += $zmtotal;
$this->zmteil .= "xYz" . $zmtotal;
$this->abfrage .= "xYz" . $abfrage;
// SQL-Zeitmessung Ende
#
#-----[ DO ]------------------------------------------
#
Einen Ordner "log_sql" als Unterordner im Forum-Root-Verzeichnis anlegen,
und mit CHMOD 777 einstellen
#
#-----[ SAVE/CLOSE ALL FILES ]------------------------------------------
#
# EoM
Erfordert die Loggeschichte noch was hier von:
http://www.phpbb.de/viewtopic.php?p=650594#650594
Oder ist das autark?
Korrekturvorschlag (Deine Funktion kann dann komplett raus)
http://www.phpbb.de/viewtopic.php?p=650594#650594
Oder ist das autark?
Korrekturvorschlag (Deine Funktion kann dann komplett raus)
Code: Alles auswählen
(IP: ' .
decode_ip($user_ip) . ')
meine Foren: http://www.maxrev.de/communities.htm
Ich kaufe Dein Forum! Angebote bitte an marc at gutt punkt it
Ich kaufe Dein Forum! Angebote bitte an marc at gutt punkt it