0 votes
in SoSci Survey (dt.) by s136618 (130 points)

Hallo!

Ich habe ein relativ langes php-Skript. Es werden Zeilen aus der Datenbank für Inhalte geladen, verschiedene Listen erstellt und geshufflet und am Ende die einzelnen Werte aus der Datenbank mit put() in interne Variablen gespeichert. Das ging bis gestern auch ohne Probleme. Seit gestern kommt es zu sehr langen Ladezeiten, wenn eine Fragebogenseite aufgerufen werden soll, auf der ein Wert in eine interne Variable gespeichert wird. Außerdem friert die gesamte SoSci-Seite ein und lässt sich auch nicht mehr neuladen, sobald ich etwas im php-Code ändern möchte. Zeitweise ließen sich auch die einzelnen Fragen nicht mehr öffnen. Probleme bestehen, seitdem put() eingeführt wurde; ein Ausschalten des Speicherns mithilfe eines Flags führt aber zu keiner Verbesserung.

Zwei Fragen dazu:
1) Gibt es seit gestern irgendwelche Server-Probleme, die das Einfrieren und die teilweise extremen Ladezeiten erklären? Falls nicht, was im php-Code könnte das Problem verursachen?
2) Bevor der Fragebogen sich gar nicht mehr laden ließ, kam es zu verzögertem Laden einzelner Fragebogenseiten, wenn auf diesen Seiten ein put()-Befehl stand. Ist das so üblich? Gibt es Möglichkeiten, das effizienter zu gestalten? Ich habe schon den Versuch unternommen, soweit möglich alle put()-Befehle auf einer ersten php-Seite im Loop abzuhandeln, mit dem oben beschriebenen Ergebnis.

Ich hoffe sehr auf Hilfe!
Viele Grüße

by s136618 (130 points)
Update: Fragebogen lässt sich ohne das Speichern gut öffnen. Nur wenn gespeichert werden soll und das dann abgebrochen wird (da das Speichern so lange dauert, dass die erste Seite nicht öffnet), dann hakt danach auch die gesamte Bearbeitung des php-Codes und Sosci friert insgesamt ein.

Problem ist also, dass put() extrem lange braucht. Welche Lösung gibt es hier?

Ich benötige put() an folgenden Stellen:
- auf der ersten Seite werden Werte in internen Variablen gespeichert. Das passiert in einem genesteten For-Loop für insgesamt 10 * 12 * 4 Werte -> dauert so lange, dass erste Seite gar nicht erst öffnet
- zwischendrin wird auf einer Seite genau ein Wert mithilfe von put() gespeichert. Auch das verzögert das Laden der entsprechenden Seite merklich.

1 Answer

+1 vote
by SoSci Survey (306k points)
edited by SoSci Survey

Den Aufzeichnungen des Servers www.soscisurvey.de (um diesen geht es, ja?) zufolge war die Last in den letzten 24 Stunden nicht auffällig höher als sonst.

Falls nicht, was im php-Code könnte das Problem verursachen?

Pauschal ist das schwer zu beantworte ... wennn man Probleme heraufbeschwören will, gibt es mehrere Optionen :) Kürzlich hatten wir z.B. mit statistic() ein wenig Ärger. Möchten Sie den PHP-Code vielleicht einmal an die info@soscisurvey.de schicken? Dann werfe ich einen Blick drauf.

Update

Es stellt sich heraus, dass das Problem nicht beim put() selbst liegt, sondern bei der Verwendung nicht-ganz-korrekter Variablennamen.

Wenn z.B. als Variablenname 'AB01_1' verwendet wird, muss SoSci Survey erst das komplette Befragungsprojekt durchsuchen. Korrekt wäre 'AB01_01'.

DIe Lösung besteht darin, beim Erstellen von Variablennamen die Funktion id() zu verwenden. Dieser Befehl erzeugt eine korrekte Variablenkennung.

// Falsch
put('AB01_'.$i, $daten);

// Richtig
put(id('AB01', $i), $daten);
by s136618 (130 points)
Vielen Dank.

Der Code ist etwas länger, ich habe Ihnen jedoch mal eine Mail geschicht. Ich bin um jedes Feedback dankbar!
by SoSci Survey (306k points)
Danke für den Code, ist angekommen. Inzwischen hat auch ein weiterer Nutzer das Problem bestätigt: https://support.soscisurvey.de/?qa=18084/

Wir sind dran.

Willkommen im Online-Support von SoSci Survey.

Hier bekommen Sie schnelle und fundierte Antworten von anderen Projektleitern und direkt von SoSci Survey.

→ Eine Frage stellen


Welcome to the SoSci Survey online support.

Simply ask a question to quickly get answers from other professionals, and directly from SoSci Survey.

→ Ask a Question

...