Informatiker Board (http://www.informatikerboard.de/board/index.php)
- Themengebiete (http://www.informatikerboard.de/board/board.php?boardid=1)
-- Praktische Informatik (http://www.informatikerboard.de/board/board.php?boardid=6)
--- Zeitabhängige Aktualisierung mit PHP (http://www.informatikerboard.de/board/thread.php?threadid=1790)


Geschrieben von Matze84 am 23.01.2014 um 21:34:

  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?



Geschrieben von eulerscheZahl am 24.01.2014 um 06:03:

 

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);
}



Geschrieben von Airblader am 25.01.2014 um 01:35:

 

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.



Geschrieben von Matze84 am 25.01.2014 um 15:40:

 

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!?



Geschrieben von Airblader am 25.01.2014 um 17:01:

 

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


Alles andere lässt sich hieraus berechnen (siehe oben).



Geschrieben von Matze84 am 28.01.2014 um 16:20:

 

Ok dann erstmal vielen dank.


Forensoftware: Burning Board, entwickelt von WoltLab GmbH