Hallo,
auf meinem Rechner laufen neben cron auch mysql und apache2 mit php. Die Zeit des Rechners ist auf UTC eingestellt. Mittels eines php-Skriptes frage ich die Werte von sensors, hddtemp ("netcat localhost 7634" <- Danke für diesen Tipp) und apcaccess und schreibe diese in eine MySQL-DB. Von dort wird sie später weiterverarbeitet.
Nun zu meinem Problem:
Wenn ich das Skript über den Browser (also von Hand) aufrufe, ist die Zeit korrekt. Immerhin habe ich auch unter /etc/php5/apache2/php.ini den Wert "date.timezone = 'Europe/Berlin'" gesetzt. Auch andere Zeitabfragen in php gehen richtig. Es soll aber automatisiert werden.
Also habe ich mit crontab -e folgende Zeile eingefügt: # mm hh DD MM dow command */10 * * * * /usr/bin/php /srv/www/htdocs/hdd_temp/temp_cron.php Das Skript [1] wird aufgerufen und trägt mir fleißig die Werte aller 10 min. ein. Allerdings wird hier statt die _richtige_ Zeit entsprechend meines Zoneneintrages komischer Weise die _falsche_ UTC-Zeit (also 2h zurück) eingetragen. Ich habe dann aus lauter Verzweiflung in crontab eine Zeile "touch /tmp/test.zeit" eingetragen. Der Zeitstempel der Datei passt.
Kann mir da jemand einen Tipp geben, wieso php die falsche Zeit hat?
Gruß & Dank, Alex
[1] temp_cron.php <?php include 'db_connect.inc.php';
$datum = date("Y-m-d H:i:s");
$coretemp = exec("/usr/bin/sensors | grep "temp1" | awk '{ print $2 }' | tr -d "+" | tr -d "°C""); $hddtemp = exec("netcat localhost 7634"); $usvtemp = exec("/usr/sbin/apcaccess | grep TIMELEFT");
$hdd_tmp = explode("|", $hddtemp); $hdd_1 = $hdd_tmp[3]; $hdd_2 = $hdd_tmp[8]; $core = substr($coretemp, 0, 4); $usv_tmp = explode(" ", $usvtemp); $usv = $usv_tmp[3];
$sql = "INSERT INTO temperatur (datum,core,hdd_1,hdd_2,usv) VALUES ('$datum',$core,$hdd_1,$hdd_2,$usv);";
echo $datum.'<br />'; echo $core.'<br />'; echo $hdd_1.'<br />'; echo $hdd_2.'<br />'; echo $usv.'<br />';
mysql_query($sql) or die (mysql_error());
mysql_close();
?>