Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

PHP - Zeitberechnung

Frage Entwicklung PHP

Mitglied: Dani

Dani (Level 5) - Jetzt verbinden

23.09.2008, aktualisiert 22:46 Uhr, 6162 Aufrufe, 11 Kommentare

Hi Leute,
es ist soweit...heute brauche ich mal ein bisschen Nachhilfe in Sachen PHP.

Wir haben hier für einen Linuxserver "rrdtool" im Einsatz. Wem das nichts sagt, sowas wie Nagios bloß etwas viel kleiner - sozusagen der kl. Bruder. Mit diesem Tool erstellen wir unsere Auswertungen für CPU, Netzwerk, Festplatten, Traffic, etc... . Damit die Graphen selbstständig sich aktualisieren habe ich einen Cronjob erstellt, der alle 5 Minuten läuft - und zwar in diesem Rythmus: 10:00 Uhr, 10:05 Uhr, 10:10Uhr

Passend dazu gibt es eine 0815 Website mit ein bisschen HTML und PHP. Diese gibt brav alle Graphen sortiert nach Typ aus. Nun möchte ich folgendes realisieren:

Der Admin "x" hat um 10:03 die Monitoring - Seite betreten und bleibt bis 10:08 Uhr auch darauf und analysiert die Graphen. Nun ist es so, dass um 10:05 (siehe oben) eine Aktualisierung der Graphen durchgeführt worden ist. D.h. es könnte schon wieder ganz anders aussehen.
Sprich die Website soll genau um 10:05:02 Uhr (Stunden:Minuten:Sekunden) reloaded werden. Der Refresh der Seite ist kein Problem - jedoch die Zeitberechung macht mir Kopfzerbrechen. Denn ich bei bereten der Seite muss berechnet werden, wie viele Sekunden noch bis 10:05 Uhr fehlen.

Meinen bisherigen Ansatz poste ich einfach mal nicht. Da sonst zu 90% die Ideen darauf aufbauen und ich vllt. auf dem falschen Weg bin. Falls ihr es nicht ganz verstanden habt, sagt Bescheid - ich hab's auch nicht gleich aufs 1. Mal kapiert.


Grüsse,
Dani
Mitglied: manuel-r
23.09.2008 um 12:00 Uhr
Ich hätte folgenden Ansatz:
Die aktuellen Minuten mit 60 multiplizieren plus die aktuellen Sekunden. Danach solange 300 subtrahieren bis der Rest kleiner 300 ist. Die Diferenz zu 300 bilden. Fertig.

Beispiel: xx:12:23 Uhr
-> 12 * 60 = 720 + 23 = 743
-> 743 - 300 = 443 - 300 = 143
-> 300 - 143 = 157 [Sekunden]

Beispiel: xx:18:59 Uhr
-> 18 * 60 = 1080 + 59 = 1139
-> 1139 - 300 = 839 - 300 = 539 - 300 = 239
-> 300 - 239 = 61 [Sekunden]

Es geht natürlich auch mit Division:
-> 18 * 60 = 1080 + 59 = 1139
-> 1139 : 300 = 3,7966
-> 0,7966 * 300 = 239
-> 300 - 239 = 61 [Sekunden]

Manuel
Bitte warten ..
Mitglied: Mitchell
23.09.2008 um 12:07 Uhr
1. du benötigst Nachhilfe in PHP? Ich wünsch dir gute Besserung, scheint die momentan umhergehende Grippe zu sein (icb beschuldige jetzt mal nicht einen gewissen Webmin, der dich womöglich bis zum Rest ausgequetscht hat)

2. Du kennst meine Kenntnisse, aber ich versuchs trotzdem mal *gg*

01.
<?php 
02.
$refresh = mktime(10, 5, 0);  
03.
$current = time();  
04.
$remain = $refresh- $current;  
05.
$minuten =  interval($remain / 60); 
06.
$sekunden = $remain % 60; 
07.
 
08.
echo "Noch $minuten Minuten und $sekunden Sekunden bis zum Refresh"
09.
?>


So ungefähr?

Mit freundlichen Grüßen

Mitchell
Bitte warten ..
Mitglied: dtzzzzzz
23.09.2008 um 12:13 Uhr
Wenn ich es richtig verstanden habe, dann soll der Admin, wenn er um 10:03 da ist und um 10:08 gehen will, um 10:05 einen automatischen Seitenreload bekommen? Oder? Wenn ja, dann mach es doch einfach mit JavaScript. Lass dort einfach jede Minute die Zeit abfragen und wenn du mod 5 bei Minuten erreicht hast, dann soll ein Reload stattfinden.
Bitte warten ..
Mitglied: Dani
23.09.2008 um 13:15 Uhr
Hi Manu,
wenn ich das richtig verstanden habe, nimmst du die Stunden * 60. Kannst du mir kurz erklären warum du das machst?! Denn somit habe ich die Minuten am Ende. Irgendwie denke ich gerade, du hast Sekunden und Minuten durcheinander gebracht. :-P

So siehts ganz gut aus:
01.
<?php 
02.
$intervall= 300; //Sekunden = 5 Minuten 
03.
 
04.
$akt_sec = (date("i") * 60) + date("s"); 
05.
 
06.
 
07.
while ($akt_sec > $intervall) 
08.
09.
        $akt_sec-= $intervall; 
10.
11.
$akt_sec = $intervall - $akt_sec + 2; 
12.
 
13.
?>
Die Tests sehen kannst gut aus, die Differenz stimmt...ich habe einfach zu kompliziert gedacht...war schon dabei den UNIX_TIMESTAMP rauszuholen...Danke!


Gruss,
Dani
Bitte warten ..
Mitglied: Dani
23.09.2008 um 13:17 Uhr
Hi Mitchell,
du glaubst gar nicht, wie viel Zeit ich schon mit dem Listenparser verbringe - könnte meine neue Freundin werden.
Bei deiner Variante, blick ich nicht so ganz durch. Der Pharser meckert, dass es die Funktion "interval()" nicht gibt. Benutzen hier eigentlich PHP 5.1.x.... ???

@dtzzz
Ein Beispiel wäre nett gewesen....


Gruss,
Dani
Bitte warten ..
Mitglied: Dani
23.09.2008 um 13:24 Uhr
Das Problem ist zum Teil schon gelöst - die Berechung der Sekunden funktioniert. Nur leider wenn ich meinen Test-PHP-Code in die index.php mit einfüge, geht der Refresh nicht mehr. So sieht im Moment meine index.php aus:
01.
<?php 
02.
$intervall= 300; //Sekunden = 5 Minuten 
03.
 
04.
$akt_sec = (date("i") * 60) + date("s"); 
05.
 
06.
 
07.
while ($akt_sec > $intervall
08.
09.
        $akt_sec-= $intervall
10.
11.
$akt_sec = $intervall - $akt_sec + 2; 
12.
 
13.
?> 
14.
 
15.
<html> 
16.
<head> 
17.
        <title>LIVE Monitoring v1</title> 
18.
        <meta http-equiv="refresh" content="<?php echo $akt_sec; ?>; URL=http://meine zieladresse"
19.
        <link rel="stylesheet" type="text/css" href="style.css"
20.
 
21.
        <script language="JavaScript" type="text/JavaScript"
22.
        <!-- 
23.
        function NewWindow(modul,x,y) 
24.
25.
                Popup = open("popup.php?bild=" +modul,"Popup","width=" + x + ",height=" + y + ",left=0,top=0,status=no,menubar=no,resizeable=no,dependent=yes,scrollbars=no,scrolling=no,location=no"); 
26.
                Popup.moveTo((screen.width/2)-x/2, (screen.height/2)-y/2); 
27.
                Popup.focus(); 
28.
29.
        //--> 
30.
        </script> 
31.
</head> 
32.
 
33.
<body> 
34.
<h1> Monitoring ROOT - Server (dserver01)</h1> 
35.
<?php 
36.
$dir = './'
37.
if(is_dir($dir)) 
38.
39.
        $files=scandir($dir); 
40.
        $i=0; 
41.
 
42.
        foreach($files as $pic
43.
44.
                if(strstr($pic, ".png")) 
45.
46.
                        if($i%2 == 0) echo "<br /><br />"
47.
                        echo "<img src=".$pic."?".time()." onClick=NewWindow('$pic','900','300'); /></img>&nbsp;&nbsp;"
48.
                        $i ++; 
49.
50.
51.
52.
?> 
53.
 
54.
</body> 
55.
</html>
Das verstehe wer will...denn der Quellcode nach dem Pharser sieht so aus:
01.
<html> 
02.
<head> 
03.
	<title>LIVE Monitoring v1</title> 
04.
	<meta http-equiv="refresh" content="5; URL=http://meine zieladresse">  
05.
	<link rel="stylesheet" type="text/css" href="style.css"> 
06.
 
07.
	<script language="JavaScript" type="text/JavaScript"> 
08.
        <!-- 
09.
        function NewWindow(modul,x,y) 
10.
11.
		Popup = open("popup.php?bild=" +modul,"Popup","width=" + x + ",height=" + y + ",left=0,top=0,status=no,menubar=no,resizeable=no,dependent=yes,scrollbars=no,scrolling=no,location=no"); 
12.
		Popup.moveTo((screen.width/2)-x/2, (screen.height/2)-y/2); 
13.
		Popup.focus(); 
14.
15.
	//--> 
16.
	</script> 
17.
</head> 
18.
 
19.
<body> 
20.
<h1> Monitoring ROOT - Server (dserver01)</h1> 
21.
<br /><br /><img src=01_load-h.png?1222168459 onClick=NewWindow('01_load-h.png','900','300'); /></img>&nbsp;&nbsp;<img src=02_load-d.png?1222168459 onClick=NewWindow('02_load-d.png','900','300'); /></img>&nbsp;&nbsp;<br /><br /><img src=03_load-w.png?1222168459 onClick=NewWindow('03_load-w.png','900','300'); /></img>&nbsp;&nbsp;<img src=04_load-w.png?1222168459 onClick=NewWindow('04_load-w.png','900','300'); /></img>&nbsp;&nbsp;<br /><br /><img src=11_memory-d.png?1222168459 onClick=NewWindow('11_memory-d.png','900','300'); /></img>&nbsp;&nbsp;<img src=15_root-w.png?1222168459 onClick=NewWindow('15_root-w.png','900','300'); /></img>&nbsp;&nbsp;<br /><br /><img src=20_processes-d.png?1222168459 onClick=NewWindow('20_processes-d.png','900','300'); /></img>&nbsp;&nbsp;<img src=21_processes-w.png?1222168459 onClick=NewWindow('21_processes-w.png','900','300'); /></img>&nbsp;&nbsp;<br /><br /><img src=25_traffic-eth0-h.png?1222168459 onClick=NewWindow('25_traffic-eth0-h.png','900','300'); /></img>&nbsp;&nbsp;<img src=26_traffic-eth0-d.png?1222168459 onClick=NewWindow('26_traffic-eth0-d.png','900','300'); /></img>&nbsp;&nbsp;<br /><br /><img src=27_traffic-eth0-w.png?1222168459 onClick=NewWindow('27_traffic-eth0-w.png','900','300'); /></img>&nbsp;&nbsp;<img src=28_traffic-eth0-m.png?1222168459 onClick=NewWindow('28_traffic-eth0-m.png','900','300'); /></img>&nbsp;&nbsp; 
22.
</body> 
23.
</html>
Das verstehe ich nicht mehr...die Syntax ist eigentlich so in Ordnung. Haben wir 100x so schon gemacht.
Bitte warten ..
Mitglied: Mitchell
23.09.2008 um 13:37 Uhr
Hi Dani,

ups, da war ich wohl teilweise noch in meinem Brief mit richtigen Wörtern

Der Befehl lautet natürlich intval, dieser gibt dir einen Integer-Wert aus. Hm...das mit dem Refresh kapiere ich grade auch nicht, entweder liegts an meinen fehlenden Javakenntnissen oder an Blindheit.

Mit freundlichen Grüßen

Mitchell
Bitte warten ..
Mitglied: dtzzzzzz
23.09.2008 um 14:16 Uhr
Hier als Beispiel mit JavaScript

01.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
02.
"http://www.w3.org/TR/html4/loose.dtd"> 
03.
<html> 
04.
<head> 
05.
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
06.
<meta name="language" content="de"> 
07.
<title>Reload</title> 
08.
 
09.
<script language="JavaScript" type="text/javascript"> 
10.
var timeInterval = 30000; // in Milisekunden, wie oft wird die Zeit verglichen (hier 30sec) 
11.
var timeIntervalReload = 5; // in Minuten (zu wann wird das Reload durchgeführt (hier jede 5te Minute einer Stunde) 
12.
var reloadFlag = false; // mehrere Reloads hintereinander unterbinden 
13.
var timeCheckTimer = window.setInterval("checkTime()", timeInterval); 
14.
 
15.
function checkTime(){ 
16.
	var timeNowObject = new Date(); 
17.
	var timeNow = timeNowObject.getMinutes(); 
18.
	var timeToReload = 0; 
19.
	 
20.
	timeToReload = timeNow%timeIntervalReload;	 
21.
	if(timeToReload == 0 && reloadFlag){ 
22.
		// reload homepage 
23.
		location.reload(); 
24.
	}else if(timeToReload != 0){ 
25.
		self.document.getElementById('reloadCounter').innerHTML = 'Reload in ' + (timeIntervalReload-timeToReload) + ' Minuten...'; 
26.
		reloadFlag = true; 
27.
28.
29.
</script> 
30.
 
31.
</head> 
32.
<body> 
33.
<div id="reloadCounter">Daten sind aktuell.</div> 
34.
</body> 
35.
</html>
Bitte warten ..
Mitglied: Dani
23.09.2008 um 16:33 Uhr
Hi dtzzzzzzzzzz,
geil...damit geht es nun. Habe es noch ein bisschen angepasst aber die Grundfunktion hat keine Probleme gemacht - Thx.


Grüsse,
Dani
Bitte warten ..
Mitglied: manuel-r
23.09.2008 um 22:39 Uhr
Nö, ich hab nichts durcheinander gebracht. Da steht doch xx:12:23 - also x Uhr 12 Minuten und 23 Sekunden. Die Stunden hatte ich ge-x-t, weil die bei deiner Problemstellung keine Rolle spielen.

Manuel
Bitte warten ..
Mitglied: Dani
23.09.2008 um 22:46 Uhr
Au...das habe ich nicht gesehen. Ok, dann möchte ich nix gesagt haben.


Grüsse,
Dani
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Heiß diskutierte Inhalte
Windows Server
DHCP Server switchen (25)

Frage von M.Marz zum Thema Windows Server ...

SAN, NAS, DAS
gelöst HP-Proliant Microserver Betriebssystem (14)

Frage von Yannosch zum Thema SAN, NAS, DAS ...

Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

Windows 7
Verteillösung für IT-Raum benötigt (12)

Frage von TheM-Man zum Thema Windows 7 ...