Hallo,
ich habe folgendes Problem. Ich möchte ein Befragungsprojekt mit vier verschiedenen Szenarien durchführen. In jedem Szenario befindet sich ein Versuch, in welchem bestimmte Zahlen einer Zahlenreihe markiert werden sollen. Hierfür haben die Teilnehmer 90 Sekunden Zeit, was ich mit dem Textbaustein Timer festgelegt habe:
<script type="text/javascript">
<!--
// Funktion zur Weiterleitung
function weiter() {
// Eine Meldung anzeigen (optional)
alert("Die Zeit ist vorbei.");
// Den Teilnehmer zur nächsten Seite weiterleiten
SoSciTools.submitPage();
}
// Countdown anzeigen
var date0 = new Date();
var timeout = date0.getTime() + %remain% * 1000;
function updateCountdown() {
// Zeit berechnen
var date = new Date();
var time = Math.ceil((timeout - date.getTime() - 50) / 1000); // Verbleibende Zeit in Sekunden
// Zeit anzeigen
var out = document.getElementById("remain");
if (!out) {
return;
}
while (out.lastChild) {
out.removeChild(out.lastChild);
}
var minutes = Math.floor(time / 60);
var seconds = String(time - 60 * minutes);
if (seconds.length < 2) seconds = "0" + seconds;
var display = String(minutes) + ":" + seconds;
var displayNode = document.createTextNode(display);
out.appendChild(displayNode);
}
// Initialisierung der Weiterleitung
SoSciTools.attachEvent(window, "load", function(evt) {
// Weiter-Knopf ausblenden (optional)
SoSciTools.submitButtonsHide();
// Zusätzlicher Timer für die Aktualisierung des Countdowns
window.setInterval(updateCountdown, 1000);
updateCountdown();
// Timer für automatische Weiterleitung starten
window.setTimeout(weiter, %remain% * 1000);
});
// -->
</script>
Weiterhin befindet sich ein PHP-Code auf der Seite:
if (!isset($time5)) {
$time5 = time();
registerVariable('time5'); // Die Variable $time5 auch nach Ende des PHP-Codes aufbewahren
}
// Prüfung, ob die Zeit schon abgelaufen ist
// (z.B. weil der Teilnehmer die Seite neu geladen hat)
$timer = 90; // Der Teilnehmer hat 1 Minute (60 Sekunden) Zeit zur Bearbeitung
if (time() >= $time5 + $timer) {
goToPage('next');
}
// Die verbleibende Zeit muss auch dem JavaScript-Code bekannt gemacht werden
$remain = $time5 + $timer - time();
replace('%remain%', $remain);
und ein HTML Code:
<p>Verbleibende Zeit: <span id="remain"></span></p>
wenn ich nun in meinem Fragebogen zu der Seite gelange und die Zeit abgelaufen ist, kommt in jedem der Szenarien folgende Fehlermeldung:
Fatal error: Maximum execution time of 5 seconds exceeded in /var/www/soscisurvey/html/inc/CacheRead.php on line 139
Folgende Anmerkung kann ich noch treffen: zwei Seiten zuvor, findet sich die fast identische Seite, mit den fast identischen Codes (bei dem PHP Code wurde die Variable $time verändert). Hier tritt die Fehlermeldung nicht auf und die Weiterleitung auf die nächste Seite funktioniert fehlerfrei.
Bitte um dringende Hilfe.
viele Grüße