0 votes
in SoSci Survey (dt.) by s224207 (120 points)

Liebes SoSci Survey Team,

ich habe folgendes Problem bei der Durchführung meiner mehrwelligen Studie:

Eine VPN, die ihre E-Mail bestätigt, soll, wenn es das nächste Mal 19:30 Uhr ist, einen weiteren Fragebogen-Link erhalten. Jedoch hat eine VPN, die sich um 20:34 registriert hat, bereits wenige Minuten später den Link zum Fragebogen erhalten. Woran könnte dies liegen?

PHP Code:

mailSchedule(false, 38, strtotime('+0 day 19:30:00'));
mailSchedule(false, 40, strtotime('+1 day 19:30:00'));
mailSchedule(false, 42, strtotime('+2 day 19:30:00'));
mailSchedule(false, 44, strtotime('+3 day 19:30:00'));
mailSchedule(false, 46, strtotime('+4 day 19:30:00'));
mailSchedule(false, 48, strtotime('+5 day 19:30:00'));
mailSchedule(false, 50, strtotime('+6 day 19:30:00'));

Ich wäre Ihnen sehr dankbar, wenn Sie mir weiterhelfen könnten!

1 Answer

0 votes
by SoSci Survey (327k points)

Die Funktion strtotime('+0 day 19:30:00') liefert um 20:30 Uhr am 18.10. das folgende Ergebnis:

  1. +0 Tage = heute
  2. 19:30 Uhr = 19:30 Uhr heute, 18.10.

Und wenn man mailSchedule() sagt, dass vor einer Stunde eine Mail hätte versendet werden sollen, dann geht diese natürlich gleich raus.

Eine schnelle Lösung fällt mir nicht ein. Sie könnten aber täglich ab 19:30 Uhr noch +1 zum Tag dazuzählen. Das könnte so aussehen:

$base = time();
if ($base > strtotime('19:30:00')) {
  $base = strtotime('next day 00:00:00');
}
mailSchedule(false, 38, strtotime('+0 day 19:30:00', $base));
mailSchedule(false, 40, strtotime('+1 day 19:30:00', $base));
mailSchedule(false, 42, strtotime('+2 day 19:30:00', $base));
...
by s224207 (120 points)
Es scheint zu klappen, vielen herzlichen Dank!

Nur um sicher zu gehen, wäre dies dann der richtige PHP-Code für die Erinnerungsmails?

$base = time();
if ($base > strtotime('19:30:00')) {
  $base = strtotime('next day 00:00:00');
}

mailSchedule(false, 38, strtotime('+0 day 19:30:00', $base));
mailSchedule(false, 40, strtotime('+1 day 19:30:00', $base));
mailSchedule(false, 42, strtotime('+2 day 19:30:00', $base));
mailSchedule(false, 44, strtotime('+3 day 19:30:00', $base));
mailSchedule(false, 46, strtotime('+4 day 19:30:00', $base));
mailSchedule(false, 48, strtotime('+5 day 19:30:00', $base));
mailSchedule(false, 50, strtotime('+6 day 19:30:00', $base));

mailSchedule(false, 39, strtotime('+0 day 19:30:00', $base)+3600*13, ['status' => 'incomplete']);
mailSchedule(false, 41, strtotime('+1 day 19:30:00', $base)+3600*13, ['status' => 'incomplete']);
mailSchedule(false, 43, strtotime('+2 day 19:30:00', $base)+3600*13, ['status' => 'incomplete']);
mailSchedule(false, 45, strtotime('+3 day 19:30:00', $base)+3600*13, ['status' => 'incomplete']);
mailSchedule(false, 47, strtotime('+4 day 19:30:00', $base)+3600*13, ['status' => 'incomplete']);
mailSchedule(false, 49, strtotime('+5 day 19:30:00', $base)+3600*13, ['status' => 'incomplete']);
mailSchedule(false, 51, strtotime('+6 day 19:30:00', $base)+3600*13, ['status' => 'incomplete']);
by SoSci Survey (327k points)
Zimindest sieht das korrekt aus... um einen Test mit kürzeren Laufzeiten werden Sie aber nicht umhin kommen, wenn Sie auf Nummer sicher gehen möchten.
by s224207 (120 points)
Vielen Dank!

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

...