Frage von kevni2012, 80

If-Funktion nur zwischen bestimmen Zeit?

Hallo zusammen!

Ich habe ein PHP Script für eine Webcam. Läuft soweit alles top! Ich hätte es jetzt allerdings gerne so, dass ein Bild pro Tag archiviert werden soll. Dafür würde ich die @copy-funktion nutzen wollen, sie aber an die Bedingung eines Zeitraums hängen. So ganz klappt es dann aber noch nicht -.-

Wäre toll, wenn mir da wer helfen könnte...

Hier mal die wichtigen Auszüge aus dem Skript:

//
//zeit

$timezone = 'Europe/Berlin';
$uhrzeit = date("Hi");

//
//verzeichnisse

$archiv = './webcam/archiv/';

//
//archivieren

if($uhrzeit >= 1000, <=1100){
@copy($BEISPIELDATEI, $archiv);
}
Antwort
von ceevee, 58

if (($uhrzeit >= 1000) && ($uhrzeit <=1100))

Zeitraum bedeutet, dass der Wert $uhrzeit großer als 1000 und kleiner als 1100 liegen soll.

Kommentar von kevni2012 ,

Erst mal Danke! Aber ich frage mich ob der Rest so passt... Denn am Anfang hatte ich es nur mit

if($uhrzeit >= 1000)

und es passierte gar nichts :(

Kommentar von ceevee ,

Ich kanns gerade nicht testen, aber 

$uhrzeit = date("Hi");

könnte einen String zurückgeben. Ich würde versuchen, den Wert mit intval in eine Zahl umzuwandeln, also 

$uhrzeitNumber = intval($uhrzeit)

http://php.net/manual/de/function.intval.php

Und mit der Zahl wird dann verglichen. Es gibt aber sicher noch elegantere Lösungen für dein Problem.

Antwort
von Suboptimierer, 33

Reicht es für deinen Zweck nicht, $uhrzeit als "H" geben zu lassen und auf  == "10" zu prüfen?

Kommentar von kevni2012 ,

Da hast du natürlich an sich Recht! Kann aber sein, dass ich die Minuten brauche, um einen etwas genaueren Zeitraum einzugrenzen, da der Upload der Cam zwar zeitgesteuert ist, das Speichern auf dem Server aber durch aus mal +/- 5Min abweichen kann :)

Antwort
von Schwimmakademie, 60

ist es dir möglich, einen CRON job zu etablieren, der diese Aufgabe seperat übernimmt?

Kommentar von kevni2012 ,

Das Skript läuft ja über einen Cron-Job. Möchte es eigtl. auch über PHP laufen lassen, damit ich alles an einer Stelle habe und schnell ändern kann ^^

Kommentar von Schwimmakademie ,

ich würde einen eigenen CRON schreiben, der nur die kamera abfragt und dann ein Bild speichert.

Dieser job sollte in dem Intervall aufgerufen werden, wo du die Bilder haben magst.

eine interne Zeitsteuerung erübrigt sich damit eigentlich

Kommentar von kevni2012 ,

Ich habe den Fehler gefunden und lasse es jetzt im Skript. Dann hab ich nur einen Cronjob, der dem Upload-Intervall entsprechend das Skript ausführt und fettich is der Spass :) Aber dennoch danke für deine Anregung!

Antwort
von adulescentulus, 5

Also bei mir funktioniert es ohne Probleme. Lass dir doch mal die Zeit ausgeben. Anbei, es reicht wenn du in der php.ini die Zeitzone setzt.

<?php
date_default_timezone_set('Europe/Berlin');
$zeit = intval(date('Hi'));

if(1000 <= $zeit && $zeit <= 1100 ){
// mache etwas
}
?>
Antwort
von kevni2012, 23

Hah! Eure Denkanstöße haben dann doch geholfen den Fehler zu finden :)

Es fehlte bei "BEISPIELSDATEI" einfach der korrekte Bezug zu "$alt_on", da dieser erst eine Funktion weiter definiert wurde, sodass der Befehl "Archiv" mit dem Attribut nichts anfangen konnte ;-)

Ps. an ceevee: Danke für den Hinweis mit dem Zeitraum, läuft 1A! Spar ich mir einen extra Cronjob :)

//
//archiv
if (($uhrzeit >= 1000) && ($uhrzeit <=1200)) {
$alt_on = $verzeichnis.$tempfile;
$archivieren = $archiv.$tempfile;
@copy($alt_on, $archivieren);
}

//
//kopie und umbenennung online
$alt_on = $verzeichnis.$tempfile;
$neu_on = $verzeichnis_root.$online;
@copy($alt_on, $neu_on);

Keine passende Antwort gefunden?

Fragen Sie die Community