[erledigt] Timer/Countdown gesucht

Alles, was PHP betrifft, kann hier besprochen werden.

[erledigt] Timer/Countdown gesucht

Postby goldfisch2k » 19. September 2008 12:31

Hallo Zusammen,

wir fahren Nachts von 3 Uhr für 10 Min die Datenbankserver runter um eine Synchronisierung der Daten durchzuführen.
(Ich weiß selbst, dass dies auch anders geht).

In dieser Zeit bietet unser Script eine Fehlerseite, die wir selbst gestalten können.

Ich suche hier ein kleines Script, was ein Counton zählt in Form von:

Wir sind in 2 Min und 4 Sekunden wieder da. Oder sowas in der Richtung.

Der Countdown soll um 3 Uhr beginnen und exakt 10 Min laufen.

Das heißt, wenn jemand um 3:05 Uhr kommt, soll dort noch 5 Min und 0 Sekunden stehen.

Hat hier jemand eine Idee?
Last edited by goldfisch2k on 19. September 2008 14:36, edited 1 time in total.
goldfisch2k
 
Posts: 19
Joined: 13. August 2008 18:58

Postby Wiedmann » 19. September 2008 12:52

Der Timestamp von 3:10 minus der Timestamp von aktuelle Zeit ergibt die Sekunden die noch übrig sind bis 3:10. Aus den Sekunden musst du dann nur noch Minuten + Sekunden machen.
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby goldfisch2k » 19. September 2008 13:23

cool, danke :-)
Hast du rein zufällig noch ein Codeschnippsel dafür zur Hand? *liebguck*
goldfisch2k
 
Posts: 19
Joined: 13. August 2008 18:58

Postby Nobbie » 19. September 2008 13:58

Code: Select all
<?php
     $ts_reboot = mktime(3, 10, 0); // Timestamp von 03:10:00 Uhr in Sekunden
     $ts_current = time(); // aktueller Timestamp in Sekunden

     if ($ts_current > $ts_reboot)  // das sollte eigentlich nicht vorkommen
          die("Läuft schon wieder...");

     $ts_remain = $ts_reboot - $ts_current; // verbleibende Anzahl Sekunden bis reboot

     $minuten =  intval($ts_remain / 60);
     $sekunden = $ts_remain % 60;

     echo "Noch $minuten Minuten und $sekunden Sekunden bis zum Neustart";
?>
Nobbie
 
Posts: 8770
Joined: 09. March 2008 13:04

Postby goldfisch2k » 19. September 2008 14:35

Hallo,

das klappt perfekt.
Vielen, vielen Dank :-)
goldfisch2k
 
Posts: 19
Joined: 13. August 2008 18:58

Postby Nobbie » 19. September 2008 17:08

Kann man mit etwas JavaScript auch noch etwas aufpäppeln:

Code: Select all
<?php
     $ts_reboot = mktime(18, 10, 0); // Timestamp von 03:10:00 Uhr in Sekunden
     $ts_current = time(); // aktueller Timestamp in Sekunden

     if ($ts_current > $ts_reboot)  // das sollte eigentlich nicht vorkommen
          die("Läuft schon wieder...");

     $ts_remain = $ts_reboot - $ts_current; // verbleibende Anzahl Sekunden bis reboot
?>
<script type="text/javascript">
var ts_remain = <?php echo $ts_remain; ?>;
function ZeitAnzeigen () {
  var minuten;
  var sekunden;
  var Element;

  if (ts_remain <= 0) {
    Text = "NEUSTART!!";
  }
  else {
    minuten = ts_remain / 60;
    minuten = new String(minuten);
    minuten = minuten.substr(0, minuten.indexOf("."));
    if ( minuten.length < 2)
         minuten = "0" +  minuten;
    sekunden = ts_remain % 60;
    sekunden = new String(sekunden);
    if (sekunden.length < 2)
        sekunden = "0" + sekunden;
    ts_remain = ts_remain - 1;
    Text =  minuten + ":" + sekunden;
  }

  Element = document.getElementById('Uhr');
  Element.firstChild.nodeValue = Text;
  window.setTimeout("ZeitAnzeigen()", 1000);
}

</script>
<style type="text/css">
.fett {
   margin-top:40px;
   font-family:Arial;
   font-size:24pt;
   color:black;
   text-align:center;
}
.Uhr {
   margin-top:40px;
   font-family:Arial;
   font-size:84pt;
    font-weight:bold;
   color:blue;
   text-align:center;
}
.RestDerSeite { font-family:Arial; color:black; }
</style>
</head>
<body onload="window.setTimeout('ZeitAnzeigen()', 1000)">
<div id="Titel" class="fett">Neustart in (MM:SS):</div>
<div id="Uhr" class="Uhr">&nbsp;</div>
</div>
</body>
</html>


Und man könnte im letzten Timeout-Event auch noch einen Reload der Seite machen (href.location = ....), dann würde sogar die Seite automatische neu gestartet werden. Aber ob die Synchronisation wirklich hinhaut auf die Sekunde genau - wer weiss es. Ein Hinweis "bitte neu laden" ist evtl. doch besser.
Nobbie
 
Posts: 8770
Joined: 09. March 2008 13:04

Postby goldfisch2k » 19. September 2008 17:12

Hi,

hatte mir das schon umgeschrieben ;-)

Hab ne normale Wartungsseite und unten dann:

Code: Select all
      <div style="text-align: center;"><big><span
 style="font-weight: bold;">Wir ben&ouml;tigen noch
ungef&auml;r: <?php $ts_reboot = mktime(3, 10, 0); // Timestamp von 03:10:00 Uhr in Sekunden
$ts_current = time(); // aktueller Timestamp in Sekunden
if ($ts_current > $ts_reboot) // das sollte eigentlich nicht vorkommen
die("0 Minuten und 0 Sekunden.<br>Bitte <a href=\"http://meineseite.tld\">hier</a> klicken zum Neuladen<br><Meta http-equiv=\"refresh\" content=\"1;url=http://meineseite.tld\">");
$ts_remain = $ts_reboot - $ts_current; // verbleibende Anzahl Sekunden bis reboot
$minuten = intval($ts_remain / 60);
$sekunden = $ts_remain % 60;
echo "$minuten Minuten und $sekunden Sekunden";
?>



Danke nochmal :-)
goldfisch2k
 
Posts: 19
Joined: 13. August 2008 18:58


Return to PHP

Who is online

Users browsing this forum: No registered users and 3 guests