0 votes
in SoSci Survey (dt.) by s178922 (280 points)

Hallo, wie hier beschrieben https://www.soscisurvey.de/help/doku.php/de:survey:opt-in-live möchte ich eine Serien-Mail nach 128 Tagen mit folgendem Code versenden: mailResume(false, 1, 3600 * 24 * 128); Dies dient der Einaldung zum nächsten Messzeitpunkt.

In meinen Testläufen mit wenigen Stunden oder Tagen hat das immer funktioniert. Nun sind mit dem obigen Code aber schon 128 Tage verstrichen und die E-Mail wurde noch nicht versendet. Kann ich etwas in den PHP-Code schreiben, damit ich erkenne, wieviel Zeit für die Software schon vergangen ist? Vielleicht gibt es ja eine Differenz zu den in echt vergangenen Tagen.

Wenn ich den Code im Fragebogen jetzt ändere, würde das die bisher für jeden Teilnehmenden gemessene Zeit wieder auf 0 zurück senden? Falls nein, würde ich den Code nämlich auf <100 Tage ändern und schauen, was passiert.

Ich bin mir sicher, dass die Teilnehmenden die den Code ausgelöst haben. Ich bin mir auch sicher, dass die Nachrichten nicht im Spam landen und mit den Servern alles OK ist (bisher kamen Mails immer im Postfach an).

1 Answer

+1 vote
by SoSci Survey (325k points)

Was Tage angeht ... Computer sind da sehr genau. Eine Differen zu den Tagen, die Sie sonst kennen, würde ich nicht erwarten.

UIch habe auch gerade nochmal überprüft, ob 128 Tage okay sind ... ja, sind sie. Technisch gesehen akzeptiert SoSci Survey alles bis zu 5 Jahren, und wenn man das überschreitet, wird eine Fehlermeldung gezeigt.

Ich bin mir auch sicher, dass die Nachrichten nicht im Spam landen

Bei mailSchedule() könnte man die geplanten Versand-Zeitpunkte einfach in der Serienmail nachsehen. Beim mailResume() ist das ein wenig schwieriger. Wenn sie mir aber mal die ID der Serienmail mitteilen mächten - und zwar jene, die in der Adresszeile des Browsers erscheint, wenn Sie die Serienmail zum bearbeiten anklicken, dann kann ich mal einen Blick in die Datenbank werfen.

by SoSci Survey (325k points)
Daaaaa kann ich Ihnen leider nichts sagen, denn auf die Datenbank der Uni Zürich kann ich nicht zugreifen. Da müssten sie sich bitte mal direkt an die SysOps der Uni wenden, damit diese in sosci_scheduled nachsehen, was sie zur ID 1548 finden.

Eventuell sagen Sie den Kollegen auch, für welche Mailadressen Ihnen Mails fehlen, dann können die in den Server-Logs nachsehen, ob da etwas verschickt wurde.
by s178922 (280 points)
Danke, das werde ich tun. Wenn ich jetzt etwas im PHP-Code ändere, z.B. 10 anstatt 128 Tage eingebe, würde das  $timepart1 = time(); wieder für jeden Teilnehmenden zurücksetzen, oder läuft dieser Zähler für jeden normal weiter? (Ich beziehe mich auf diesen Code:)

// Die Zeit des ersten Aufrufs der Unterbrecherseite wird in Variable $timepart1 gespeichert
// isset() und registerVariable() verhindern, dass diese Zeit beim erneuten Aufruf der Seite (z.B. Neuladen der Seite) geändert wird und/oder dass E-Mails doppelt geplant werden
if (!isset($timepart1)) {
  // Zeit speichern
  $timepart1 = time();
  registerVariable($timepart1);
 
  // Einladung mit der Serienmail ID 1 zum zweiten Messzeitpunkt nach 7 Tagen senden
  // Der Zeitabstand wird jeweils in Sekunden angegeben: 7 x 24 x 3600 Sekunden = 7 Tage
  mailResume(false, 1, 7 * 24 * 3600);
 
  // Erste Erinnerungsmail mit Serienmail ID 2 nach 9 Tagen senden
  // (d.h. zwei Tage nach der ersten Einladung zum zweiten Messzeitpunkt)
  mailResume(false, 2, 9 * 24 * 3600);
 
  // Zweite Erinnerungsmail mit Serienmail ID 3 nach 11 Tagen senden
  // (d.h. vier Tage nach der ersten Einladung)
  mailResume(false, 3, 11 * 24 * 3600);
}

https://www.soscisurvey.de/help/doku.php/de:survey:opt-in-live
by SoSci Survey (325k points)
Der Code wird in dem Moment aktiv, wo eine Person die Seite im Fragebogen ansieht. In dem Moment, wo dann mailResume() aufgerufen wird, schreibt SoSci Survey einen Termin in die Datenbank, wann die Mail verschickt werden soll.

Wenn Sie nun also etwas am PHP-Code ändern, dann beeinflusst das nur neue Interviews, und solche die Sie ggf. mittels "Ausgefüllten Fragebogen ändern" nochmal auf der Seite mit dem PHP-Code öffnen. In Ihrem Fall würde letzteres aber nicht funktionieren, weil der Code aufgrund dem isset() ja nur einmalig aufgerufen wird.
by s178922 (280 points)
Danke, ja, dann bringt das nichts. Inzwischen habe ich herausgefunden, dass die Opt-In Emails problemlos bei den Teilnehmenden ankommen. Aber alle Serienmails, die später auf der Unterbrecherseite via PHP-Code und mailResume() ausgelöst werden sollten, treffen nicht ein. Unter "Einladungen versenden" -> "Serienmails" steht jedoch unter der ID das korrekte Datum, an dem es abgeschickt werden sollte. Könnte diese Info irgendwie helfen, den Fehler ausfindig zu machen? Werden die von separaten Adressen aus geschickt?
by SoSci Survey (325k points)
Womöglich ist der Server einfach nicht korrekt konfiguriert, E-Mails zeitgeteuert zu versenden? Das muss per Cronjob eingerichtet werden: https://www.soscisurvey.de/help/doku.php/de:server:crontask

Vorsicht: Wenn das bisher nicht funktionierte, sollten die schon vergagenenen Versandzeitpunkt in der Datenbank geändert werden (auf den aktuellen Zeitpunkt). Nicht, dass Versandzeitpunkte verworfen werden, wenn sie schon zu lange in der Vergangenheit liegen.

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

...