Nach Upgrade von 2.x nach 3.1 Mitgliederliste sehr langsamer Seitenaufbau
Nach Upgrade von 2.x nach 3.1 Mitgliederliste sehr langsamer Seitenaufbau
Hallo Fasse,
wir setzen Admidio zur Verwaltung unserer Mitglieder schon einige Jahre ein. Da wir nun alles auf responsive Umstellen war auch ein Upgrade auf die aktuelle Version mal fällig.
Wir nutzen Admidio zur Stammdaten Erfassung für die Mitglieder unseres Vereins. Auf die DB haben nur 3 Leute Zugriff. Das Verzeichnis selbst schützen wir noch mit htaccess. Bei unserem Mitglieder Modell kann die Mitgliedschaft auch pausieren. In diesem Fall werden die Mitglieder in eine andere Rolle verschoben. Bedeutet aber das wir nun mit den inaktiven auf ca. 3000 Datensätze kommen.
In der Version 2 war alles superschnell, im Gegensatz zu Version 3 dauert der Seitenaufbau bis zu 30 sec. (auch mit Zugriff mittels mobilen Gerät) Wenn die Seite jedoch geladen ist kann man sich in der Anwendung gewohnt schnell bewegen. (Suchen, Editieren, Speichern)
Kann man an der Server / php Konfiguration etwas machen damit es nahezu gleich schnell arbeitet wie vor dem Upgrade? Gern stell ich Dir einen Zugang zur Verfügung wenn Du es selbst testen möchtest.
wir setzen Admidio zur Verwaltung unserer Mitglieder schon einige Jahre ein. Da wir nun alles auf responsive Umstellen war auch ein Upgrade auf die aktuelle Version mal fällig.
Wir nutzen Admidio zur Stammdaten Erfassung für die Mitglieder unseres Vereins. Auf die DB haben nur 3 Leute Zugriff. Das Verzeichnis selbst schützen wir noch mit htaccess. Bei unserem Mitglieder Modell kann die Mitgliedschaft auch pausieren. In diesem Fall werden die Mitglieder in eine andere Rolle verschoben. Bedeutet aber das wir nun mit den inaktiven auf ca. 3000 Datensätze kommen.
In der Version 2 war alles superschnell, im Gegensatz zu Version 3 dauert der Seitenaufbau bis zu 30 sec. (auch mit Zugriff mittels mobilen Gerät) Wenn die Seite jedoch geladen ist kann man sich in der Anwendung gewohnt schnell bewegen. (Suchen, Editieren, Speichern)
Kann man an der Server / php Konfiguration etwas machen damit es nahezu gleich schnell arbeitet wie vor dem Upgrade? Gern stell ich Dir einen Zugang zur Verfügung wenn Du es selbst testen möchtest.
Re: Nach Upgrade von 2.x nach 3.1 Mitgliederliste sehr langsamer Seitenaufbau
bei welchen seitenaufrufen ist es so langsam? Nur bei "adm_program/modules/members/members.php" oder wo anders auch?
Re: Nach Upgrade von 2.x nach 3.1 Mitgliederliste sehr langsamer Seitenaufbau
Nur die Benutzerverwaltung ist langsam
Re: Nach Upgrade von 2.x nach 3.1 Mitgliederliste sehr langsamer Seitenaufbau
Pass das mal an:
https://github.com/Admidio/admidio/blob ... s.php#L117
Und ruf dann die seite auf und schau was er ausgibt und schick mir die zeit
https://github.com/Admidio/admidio/blob ... s.php#L117
Code: Alles auswählen
$startTime = microtime(true);
$mglStatement = $gDb->query($sql);
$endTime = microtime(true);
var_dump($endTime - $startTime);
Re: Nach Upgrade von 2.x nach 3.1 Mitgliederliste sehr langsamer Seitenaufbau
Hab mal Suchergebnisse auf 10 statt 25 runtergestellt, ohne erkennbaren Erfolg. Beim Aufruf scheint er alle Datensätze zu laden um sie dann in 10er Seiten aufzuteilen. Bei aktuell 2618 Datensätzen dauert das fast 20 Sekunden bis die Seite aufgebaut ist.
Wir haben für die Mitglieder 2 Rollen, aktiv und ausgetreten. Es würde schon helfen, sollte es möglich sein, das ich in den Einstellungen hinterlegen kann, das bei Öffnen der Benutzerverwaltung nur Mitglieder der Rollen 1,2 oder 3 angezeigt werden.
Oder gibt es einen Dreh wie ich mit den ruhenden Mitgliedern umgehe?
Wie administriert man eine inaktive Rolle? Bisher haben wir das so gehandhabt das die Mitglieder die ihren Jahresbeitrag nicht bezahlt haben ihr Mitgliedschaft ruhen lassen und von uns die Rolle ausgetreten bekommen haben. Wenn die Mitglieder sich wieder entschlossen haben ihren Beitrag für das neue Jahr zu bezahlen haben wir sie aus der Rolle ausgetreten in die Mitglieder verschoben.
Wir haben für die Mitglieder 2 Rollen, aktiv und ausgetreten. Es würde schon helfen, sollte es möglich sein, das ich in den Einstellungen hinterlegen kann, das bei Öffnen der Benutzerverwaltung nur Mitglieder der Rollen 1,2 oder 3 angezeigt werden.
Oder gibt es einen Dreh wie ich mit den ruhenden Mitgliedern umgehe?
Wie administriert man eine inaktive Rolle? Bisher haben wir das so gehandhabt das die Mitglieder die ihren Jahresbeitrag nicht bezahlt haben ihr Mitgliedschaft ruhen lassen und von uns die Rolle ausgetreten bekommen haben. Wenn die Mitglieder sich wieder entschlossen haben ihren Beitrag für das neue Jahr zu bezahlen haben wir sie aus der Rolle ausgetreten in die Mitglieder verschoben.
Re: Nach Upgrade von 2.x nach 3.1 Mitgliederliste sehr langsamer Seitenaufbau
float(0.0012638568878174)
float(0.0018429756164551)
float(0.0018429756164551)
Re: Nach Upgrade von 2.x nach 3.1 Mitgliederliste sehr langsamer Seitenaufbau
sorry mein fehler. falsche stelle.
https://github.com/Admidio/admidio/blob ... #L205-L208
https://github.com/Admidio/admidio/blob ... #L332-L336
Kann sein das da viele ausgaben kommen
https://github.com/Admidio/admidio/blob ... #L205-L208
https://github.com/Admidio/admidio/blob ... #L332-L336
Code: Alles auswählen
$irow = 1; // Zahler fuer die jeweilige Zeile
$startTime = microtime(true);
while($row = $mglStatement->fetch())
{
$endTime = microtime(true);
var_dump($endTime - $startTime);
Code: Alles auswählen
$membersTable->addRowByArray($columnValues);
++$irow;
$startTime = microtime(true);
}
var_dump($irow);
Re: Nach Upgrade von 2.x nach 3.1 Mitgliederliste sehr langsamer Seitenaufbau
weiße Seite nach Einbau
Re: Nach Upgrade von 2.x nach 3.1 Mitgliederliste sehr langsamer Seitenaufbau
also bei mir funktionierts. Kannst bitte nochmal genau schauen ob der code wirklich richtig ist.
bzw es könnte sein das er weil es so viele einträge sind mit dem code probleme hat. Hier noch eine verbesserte variante:
bzw es könnte sein das er weil es so viele einträge sind mit dem code probleme hat. Hier noch eine verbesserte variante:
Code: Alles auswählen
$irow = 1; // Zahler fuer die jeweilige Zeile
$arrayTime = array();
$startTime = microtime(true);
while($row = $mglStatement->fetch())
{
$endTime = microtime(true);
$arrayTime[] = $endTime - $startTime;
Code: Alles auswählen
$membersTable->addRowByArray($columnValues);
++$irow;
$startTime = microtime(true);
}
var_dump($arrayTime);
var_dump($irow - 1);
Re: Nach Upgrade von 2.x nach 3.1 Mitgliederliste sehr langsamer Seitenaufbau
Danke für deine Mühe, kann ich jedoch erst heute abend machen.
Vom Büro aus kein Zugriff auf meinen Server
Ich melde mich
Vom Büro aus kein Zugriff auf meinen Server
Ich melde mich
Re: Nach Upgrade von 2.x nach 3.1 Mitgliederliste sehr langsamer Seitenaufbau
ich glaub ich hab auch schon eine möglichkeit gefunden einiges an speed rauszuholen. aber ich warte mal auf deine daten
Re: Nach Upgrade von 2.x nach 3.1 Mitgliederliste sehr langsamer Seitenaufbau
Hab die Ausgabe mal angehangen. Ging wohl gestern auch schon aba nur nicht lang genug gewartet.
- Dateianhänge
-
- ausgabe.txt.zip
- (8.33 KiB) 707-mal heruntergeladen
Re: Nach Upgrade von 2.x nach 3.1 Mitgliederliste sehr langsamer Seitenaufbau
Versuch mal ob das zumindest etwas an performance bringt:
https://github.com/Admidio/admidio/blob ... p#L50-L116
https://github.com/Admidio/admidio/blob ... p#L50-L116
Code: Alles auswählen
if($getMembers)
{
$memberCondition = ' AND EXISTS
(SELECT 1
FROM '.TBL_MEMBERS.'
INNER JOIN '.TBL_ROLES.'
ON rol_id = mem_rol_id
INNER JOIN '.TBL_CATEGORIES.'
ON cat_id = rol_cat_id
WHERE mem_usr_id = usr_id
AND mem_begin <= \''.DATE_NOW.'\'
AND mem_end > \''.DATE_NOW.'\'
AND rol_valid = 1
AND cat_name_intern <> \'CONFIRMATION_OF_PARTICIPATION\'
AND ( cat_org_id = '. $gCurrentOrganization->getValue('org_id'). '
OR cat_org_id IS NULL )
LIMIT 1) ';
}
// alle Mitglieder zur Auswahl selektieren
// unbestaetigte User werden dabei nicht angezeigt
$sql = 'SELECT usr_id, last_name.usd_value as last_name, first_name.usd_value as first_name,
email.usd_value as email, gender.usd_value as gender, birthday.usd_value as birthday,
usr_login_name, COALESCE(usr_timestamp_change, usr_timestamp_create) as timestamp,
EXISTS (SELECT 1
FROM '.TBL_MEMBERS.'
INNER JOIN '.TBL_ROLES.'
ON rol_id = mem_rol_id
INNER JOIN '.TBL_CATEGORIES.'
ON cat_id = rol_cat_id
WHERE rol_valid = 1
AND cat_name_intern <> \'CONFIRMATION_OF_PARTICIPATION\'
AND ( cat_org_id = '. $gCurrentOrganization->getValue('org_id'). '
OR cat_org_id IS NULL )
AND mem_begin <= \''.DATE_NOW.'\'
AND mem_end > \''.DATE_NOW.'\'
AND mem_usr_id = usr_id
LIMIT 1) as member_this_orga,
EXISTS (SELECT 1
FROM '.TBL_MEMBERS.'
INNER JOIN '.TBL_ROLES.'
ON rol_id = mem_rol_id
INNER JOIN '.TBL_CATEGORIES.'
ON cat_id = rol_cat_id
WHERE rol_valid = 1
AND cat_name_intern <> \'CONFIRMATION_OF_PARTICIPATION\'
AND cat_org_id <> '. $gCurrentOrganization->getValue('org_id'). '
AND mem_begin <= \''.DATE_NOW.'\'
AND mem_end > \''.DATE_NOW.'\'
AND mem_usr_id = usr_id
LIMIT 1) as member_other_orga
FROM '.TBL_USERS.'
INNER JOIN '.TBL_USER_DATA.' as last_name
ON last_name.usd_usr_id = usr_id
AND last_name.usd_usf_id = '. $gProfileFields->getProperty('LAST_NAME', 'usf_id'). '
INNER JOIN '.TBL_USER_DATA.' as first_name
ON first_name.usd_usr_id = usr_id
AND first_name.usd_usf_id = '. $gProfileFields->getProperty('FIRST_NAME', 'usf_id'). '
LEFT JOIN '.TBL_USER_DATA.' as email
ON email.usd_usr_id = usr_id
AND email.usd_usf_id = '. $gProfileFields->getProperty('EMAIL', 'usf_id'). '
LEFT JOIN '.TBL_USER_DATA.' as gender
ON gender.usd_usr_id = usr_id
AND gender.usd_usf_id = '. $gProfileFields->getProperty('GENDER', 'usf_id'). '
LEFT JOIN '.TBL_USER_DATA.' as birthday
ON birthday.usd_usr_id = usr_id
AND birthday.usd_usf_id = '. $gProfileFields->getProperty('BIRTHDAY', 'usf_id'). '
WHERE usr_valid = 1
'.$memberCondition.'
ORDER BY last_name.usd_value, first_name.usd_value';
Re: Nach Upgrade von 2.x nach 3.1 Mitgliederliste sehr langsamer Seitenaufbau
nicht wirklich. Schade
Wenn Du es mal sehen willst, richt ich Dir gern einen Zugriff ein. Gäbe es einen anderen Weg um bei ersten Aufruf die inaktiven Mitglieder (Rolle 2) nicht mit ausgeben zu lassen?
Das wären über die Hälfte der 2618 Datensätze weniger
Wenn Du es mal sehen willst, richt ich Dir gern einen Zugriff ein. Gäbe es einen anderen Weg um bei ersten Aufruf die inaktiven Mitglieder (Rolle 2) nicht mit ausgeben zu lassen?
Das wären über die Hälfte der 2618 Datensätze weniger
Re: Nach Upgrade von 2.x nach 3.1 Mitgliederliste sehr langsamer Seitenaufbau
Könnte man die Demo DB hier mal füllen so das sie 2500 Datensätze hat?