0 votes
ago in SoSci Survey (dt.) by s293220 (130 points)
retagged ago by s293220

Hallo,

ich nutze einen PHP-Code-Fragebogen, um automatisch Versandtermine für 40 Serienmails pro Teilnehmer zu planen (Experience Sampling, 4x täglich über 10 Tage).

Das Problem: Wenn der auslösende Fragebogen durch einen Doppelklick o. Ä. zweimal aufgerufen wird, läuft der Planungscode doppelt durch – obwohl ich getRoute() != 'repeat' als Schutz verwende.

Ich möchte als zusätzliche Absicherung zu Beginn des Codes prüfen, ob für den aktuellen Teilnehmer bereits Versandtermine existieren. Nur wenn keine vorhanden sind, soll der Code ausgeführt werden.

Meine Fragen:
1. Gibt es eine Funktion (z. B. mailGetPlanned() o. Ä.), mit der ich geplante Versandtermine für den aktuellen Teilnehmer abfragen kann?
2. Was gibt diese Funktion zurück, wenn noch keine Termine geplant wurden?
3. Gibt es eine empfohlene Methode, um den Code atomar zu sperren (d. h. sicherzustellen, dass er bei gleichzeitigem Aufruf nur einmal ausgeführt wird)?

Bestehende Termine möchte ich ausdrücklich nicht löschen – mailRevoke() scheidet daher aus.

Vielen Dank!

1 Answer

0 votes
ago by SoSci Survey (366k points)
  1. Gibt es eine Funktion (z. B. mailGetPlanned() o. Ä.), mit der ich geplante Versandtermine für den aktuellen Teilnehmer abfragen kann?

Neine, eine solche Funktion gibt es nicht.

  1. Gibt es eine empfohlene Methode, um den Code atomar zu sperren (d. h. sicherzustellen, dass er bei gleichzeitigem Aufruf nur einmal ausgeführt wird)?

Die Datenbank für Inhalte wäre da ein erster Ansatzpunkt, das könnte dann so aussehen:

$userID = 'X-'.caseSerial();
$info = dbGet($userID);
if (empty($info)) {
  dbSet($userID, 1);
  // Hier der Code, der nur genau einmal pro Person laufen soll
}

Diese Lösung schließt auch mehrfache Aufrufe des Fragebogens als mögliche Ursache für mehrere Code-Läufe aus.

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

...