Zeitabhängige Aktualisierung mit PHP

Neue Frage »

Auf diesen Beitrag antworten »
Matze84 Zeitabhängige Aktualisierung mit PHP

Also meine Frage ist folgende:

Ich möchte das bei Klick auf einen Button ein Ereignis/Event gestartet wird.
Dieses läuft dann sagen wir 1h. Immer wenn die Person die Seite aktualisiert, wird die Restzeit angezeigt, bis das Ereignis beendet ist.

Wenn die Zeit abgelaufen ist, soll aber automatisch das gleiche Event noch ein 2tes (und letztes mal) ausgeführt werden. (mit der gleichen Zeit)

Beispiel:
Klick auf Button--> 1h -->nach 55Minuten aktualisieren -->Restzeit 5min --> nach weiteren !!!10!!!Minuten erneut aktualisieren --> Restzeit vom 2ten automatisch gestarteten Event 55Minuten --> nach weiteren 55Minuten --> Restzeit 0 somit beendet.

Ich habe mir prinzipiell folgendes dazu überlegt.
Ich nutze eine Datenbank und schreibe dort das Event rein mit (mind.) der Endzeit (wann das Event beendet ist) und dann kann ich ja die Differenz zwischen Endzeit und aktueller Zeit bilden.
Dann habe ich ja die Restzeit.
Aber wie starte ich !!!OHNE!!! Benutzerinteraktion das Event das 2te mal?

Habt ihr eine Idee?
 
Auf diesen Beitrag antworten »
eulerscheZahl

Ich kenne mich mit PHP leider nicht aus und weiß nicht, in wie weit das realisierbar ist.
Meine Ideen:
1. rufe die Funktion einfach zweifach auf: (ist kein PHP-Code)
code:
1:
2:
3:
4:
onButtonClickByUser()
{
    doFunction(); doFunction();
}


2. gib der Funktion, die du ausführen willst, einen Zähler mit, wie oft du sie schon hast laufen lassen:
code:
1:
2:
3:
4:
5:
6:
doFunction(int done)
{
    if(done >= 1) break;
    //...
    doFunction(done + 1);
}
Auf diesen Beitrag antworten »
Airblader

Ich sehe keinen wirklichen Grund, hier aktiv irgendetwas ein zweites Mal zu starten. Wenn du den Startzeitstempel und die Event-Dauer hast, dann kannst du problemlos errechnen, ob du im ersten oder zweiten Durchgang bist und wieviel Zeit über ist.

code:
1:
2:
$isFirstEvent = ($current - $start) <= $eventLength;
$remaining = $current - $start - $eventLength * ($isFirstEvent ? 0 : 1)


(wobei ich persönlich letzteres niemals so im Code schreiben würde, aber zumindest funktioniert es solange alles innerhalb der Grenzen ist).

Das lässt sich auch problemlos für eine beliebige Anzahl von Durchläufen machen.
Auf diesen Beitrag antworten »
Matze84

Zitat:
Original von Airblader
Ich sehe keinen wirklichen Grund, hier aktiv irgendetwas ein zweites Mal zu starten. Wenn du den Startzeitstempel und die Event-Dauer hast, dann kannst du problemlos errechnen, ob du im ersten oder zweiten Durchgang bist und wieviel Zeit über ist.


Du meinst das ich quasi als Eventdauer 2h angebe und das dann Zeittechnisch in 2 Events unterteile?
Also wenn 1h des Events abgelaufen ist, dass dann quasi der erste Teil beendet ist...

sprich wenn Zeit > (Eventdauer / 2) dann bin ich in der 2ten Hälfte und in der jeweiligen Hälfte muss ich dann ja nur noch die restzeitbestimmen.
Also für erste Hälfte: Eventdauer/2 - $currentTimeStamp
für zweite Hälfte: EventDauer - $currentTimeStamp....

bzw so ähnlich!?
 
Auf diesen Beitrag antworten »
Airblader

Prinzipiell geht das, ja. Persönlich würde ich es anders aufbauen, denn wenn du ein Event mehrfach laufen lassen möchtest, dann ist es eigentlich falsch als "Eventdauer" 2h anzugeben und es dann zu unterteilen. Es ist ja nicht ein Event mit zwei Phasen, sondern ein Event das zweimal läuft. Das ist alelrdings "nur" ein Designunterschied.

Die drei Größen, mit denen ich hantieren würde, wären
  • Start des (ersten) Events für diesen User (Datenbank)
  • Länge eines Events (Datenbank oder Konstante)
  • Momentaner Zeitstempel (Laufzeitgröße)


Alles andere lässt sich hieraus berechnen (siehe oben).
Auf diesen Beitrag antworten »
Matze84

Ok dann erstmal vielen dank.
 
Neue Frage »
Antworten »


Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »