• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

Jede Sekunde was in Datenbank speichern

Tectum

New member
Hallo, ich benätige ein sekunden genaus logsystem, hier mein ansatz:
Code:
<script language="javascript" type="text/javascript">
function save() {
<?php mysql_query("UPDATE ava_userlog_FTK SET sekunden = sekunden + 1 WHERE user='$user_id' AND datum='2011-02-18'");?>
}
window.onload = function() {setInterval('save()', 1000);}
</script>
da speichert er aber nur beim reload der page, aber die funktion wird doch jede sekunde neu gestartet oder nicht?
 
ja schon klar, ist ne intranetlösung, kann man auch noch sicherer machen, aber es geht darum die arbeitszeit zu dokumentieren, aber es muss jede sekunde gespeichert werden, falls der mitarbeiter nichts macht und nach 1h die maske schließt, gab es ja kein refresh um die sache zu speichern, gibts da nicht was mit ajax oder so?
 
SUUUUUPER...kann mir da einer helfen? Hab noch nie was mit ajax gemacht, ist doch bestimmt nur n mini codeschnipsel
 
Ist schon etwas mehr als ein mini codeschnipsel.
Ist das Serverscript schon fertig, das die DB-Einträge machen soll?
 
ja n ganz easy +1 skript
Code:
<?php mysql_query("UPDATE ava_userlog_FTK SET sekunden = sekunden + 1 WHERE user='$user_id' AND datum='2011-02-18'");?>
 
so?
Code:
function save() {
	// Request erzeugen
	if (window.XMLHttpRequest) {
		request = new XMLHttpRequest(); // Mozilla, Safari, Opera
	} else if (window.ActiveXObject) {
		try {
			request = new ActiveXObject('Msxml2.XMLHTTP'); // IE 5
		} catch (e) {
			try {
				request = new ActiveXObject('Microsoft.XMLHTTP'); // IE 6
			} catch (e) {}
		}
	}

	// überprüfen, ob Request erzeugt wurde
	if (!request) {
		alert("Kann keine XMLHTTP-Instanz erzeugen");
		return false;
	} else {
		var url = "sekunde_addieren.php";
		// Request öffnen
		request.open('post', url, true);
		// Request senden
		request.send(null);
		// Request auswerten
		request.onreadystatechange = interpretRequest;
	}
}
window.onload = function() {setInterval('save()', 1000);}
 
Cool - bei dir möchte ich gerne arbeiten: 10 min am PC sitzen und ca. 2 Tage gutgeschrieben bekommen... das ist ja mal sowas von unsicher! Für solche "Überwachungs"-Ambitionen (die ich nicht sehr sympatisch finde) gibt es clientseitige Umsetzungen.
 
;)

Aber zu deiner Frage: dein letzter Code ist vom Ansatz her korrekt... wenn du ein Skript hast, das sekunde_addieren.php heißt. ABER du hast da eine Referenz auf eine Funktion interpretRequest... wo wird die definiert?
Und man kann sich nicht auf die Zeiten von setInterval/setTimeout verlassen - d.h. die 1000 ms sind nicht genau (in wie weit sich die Fehler bei Interval wieder rausmitteln, weiß ich nicht).

Der Ansatz mit dem Sekundenhochzählen ist meiner Meinung nach einfach viel zu unsicher und unzuverlässig (mehr wollte ich im letzten Beitrag eigentlich auch nicht sagen).

Der Sinn der Ganzen Aktion entzieht sich mir sowieso noch: folgendes Szenario: der Mitarbeiter öffnet deine Eingabemaske im Browser und geht dann Mittagessen. Für was willst du die Sekunden wissen, die das Fenster da dann offen ist?
 
Der Grund liegt darin, dass der Mitarbeiter in der Arbeitszeit die er die Maske benutzt verschiedene Ereignisse und Ergebnisse zu erfüllen hat, dieser Erfolg wird an der Produktivität gemessen, also was erreicht er in Zeit x. Um sich die Quote nicht zu versauen, lässt das keiner über die Pause an, mein ansatz war ja dann mit timestamps zu arbeiten, aber angenommen er geht wirklich in die pause, sitzt vor seinem arbeitsplatz und macht einfach nix, dann zählt es ja nicht weiter, angenommen er schaltet dann den browser aus und startet neu, dann wurde keine aktion zum speichern der zeit ausgeführt, also muss eine sekündliche speicherung stattfinden, hat da jemand denn eine sichere und anwendbare Lösung für mich?
 
Der Grund liegt darin, dass der Mitarbeiter in der Arbeitszeit die er die Maske benutzt verschiedene Ereignisse und Ergebnisse zu erfüllen hat, dieser Erfolg wird an der Produktivität gemessen, also was erreicht er in Zeit x. Um sich die Quote nicht zu versauen, lässt das keiner über die Pause an, mein ansatz war ja dann mit timestamps zu arbeiten, aber angenommen er geht wirklich in die pause, sitzt vor seinem arbeitsplatz und macht einfach nix, dann zählt es ja nicht weiter, angenommen er schaltet dann den browser aus und startet neu, dann wurde keine aktion zum speichern der zeit ausgeführt, also muss eine sekündliche speicherung stattfinden, hat da jemand denn eine sichere und anwendbare Lösung für mich?
Ich verstehe die Logik nicht. Wenn ein Mitarbeiter eine Aktion bearbeitet, dann wird dies in der DB gespeichert, wenn er nix macht, dann werden auch keine Aktionen in der DB erzeugt. Daraus läßt sich doch locker ermitteln, wieviele Aktionen er pro Stunde, Tag, Woche, Monat, Jahr, usw. ausgeführt hat. Und man kann es mit dem Sollwert vergleichen, was pro Zeiteinheit an Aktionen möglich gewesen wäre. Außerdem kann man zusätzlich den Start einer Aktion (die Anzeige der Aufgabe) festhalten, so läßt sich die Bearbeitungsdauer ermitteln und Ausreißer aufspüren. Wenn ein Mitarbeiter sich also seinen Schnitt in der Pause nicht vermiesen möchte, dann muss er vor der Pause den Pausenknopf drücken - die Pausen kann man also auch erfassen, zusammenzählen, auswerten, usw.
Warum man dann jede Sekunde was aufschreiben will, weiß ich nicht.
 
Zurück
Oben