CronJob-Service
bei SELFPHP mit ...
|
+ minütlichen Aufrufen
+ eigenem Crontab Eintrag
+ unbegrenzten CronJobs
+ Statistiken
+ Beispielaufrufen
+ Control-Bereich
Führen Sie mit den CronJobs von
SELFPHP zeitgesteuert Programme
auf Ihrem Server
aus. Weitere Infos
|
:: Anbieterverzeichnis ::
Globale Branchen
Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP
:: Newsletter ::
Abonnieren Sie hier den kostenlosen
SELFPHP Newsletter!
|
MySQLi/PDO/(MySQL) Anfänger, Fortgeschrittene oder Experten können hier Fragen und Probleme rund um MySQLi/PDO/(MySQL) diskutieren |
04.06.2018, 22:31:07
|
Junior Member
|
|
Registriert seit: Jun 2003
Beiträge: 186
|
|
AW: mehrere Tabellen über Timestamp abfragen
So ich hab jetzt eine Lösung gefunden.
Ich lasse das nicht mehr in einem Query, sondern mach es über mehrere Abfragen und dann mit Arrays.
Das Abarbeiten der Funktion dauert jetzt je nach Zeitraum ca. 8 Sekunden.
So sieht das im Moment aus:
PHP-Code:
function hzg_pvbetrieb_einzel($von=NULL, $bis=NULL, $betriebsart=NULL){
include('sql_connect.php');
//*** Betriebsarten***
// 0 = Heizen
// 5 = Warmwasser
// 12 = Photovoltaik
// 17 = ZWE (Zweitwärmeerzäuger -> Heizstab)
$verbrauch = NULL;
$ausgabe = NULL;
$i=0;
// Datum der Form dd.mm.yyyy umwandeln in YYYY-mm-dd
if($von !== NULL && $bis !== NULL){
$vondatum_split = explode(".",$von);
$vondatum = $vondatum_split[2]."-".$vondatum_split[1]."-".$vondatum_split[0];
$bisdatum_split = explode(".",$bis);
$bisdatum = $bisdatum_split[2]."-".$bisdatum_split[1]."-".$bisdatum_split[0];
$zeitraum = " BETWEEN '".$vondatum."' AND '".$bisdatum."'";
}
//===== WEBSERVER-Daten der Heizung ===============
$sql_webquery = "SELECT wp_status, CONVERT(DATE_FORMAT(timestamp,'%Y-%m-%d-%H:%i:00'), DATETIME) AS w_timestamp, TBWsoll
FROM heizung_webdaten
WHERE timestamp ".$zeitraum."
AND wp_status = ".$betriebsart."
ORDER BY w_timestamp";
$result = $mysqli->query($sql_webquery);
echo $mysqli->error;
while($daten = $result->fetch_array(MYSQLI_ASSOC)){
$webdaten[$i] = array('timestamp' => $daten['w_timestamp'],
'wp_status' => $daten['wp_status'],
'TBWsoll' => $daten['TBWsoll']);
$i++;
}
//======= DATEN Stromzähler für Heizung ==============
$sql_hzquery = "SELECT WirkenergieSigmaL_imp, WirkleistungSigmaL, CONVERT(DATE_FORMAT(timestamp,'%Y-%m-%d-%H:%i:00'), DATETIME) AS timestamp
FROM strom_heizungsdaten
WHERE timestamp ".$zeitraum."
ORDER BY timestamp";
$result = $mysqli->query($sql_hzquery);
echo $mysqli->error;
while($hzdaten = $result->fetch_array(MYSQLI_ASSOC)){
$hzstrom[$hzdaten['timestamp']] = array('WirkenergieSigmaL_imp' => $hzdaten['WirkenergieSigmaL_imp'],
'WirkleistungSigmaL' => $hzdaten['WirkleistungSigmaL']);
}
//======= DATEN Stromzähler Haus-Gesamt ===================
$sql_hausstrom = "SELECT CONVERT(DATE_FORMAT(timestamp,'%Y-%m-%d-%H:%i:00'), DATETIME) AS timestamp, WirkleistungSigmaL
FROM strom_hausdaten
WHERE timestamp ".$zeitraum."
ORDER BY timestamp";
$result = $mysqli->query($sql_hausstrom);
echo $mysqli->error;
while($hausdaten = $result->fetch_array(MYSQLI_ASSOC)){
$hausstrom[$hausdaten['timestamp']] = array('WirkleistungSigmaL' => $hausdaten['WirkleistungSigmaL']);
}
//======== DATEN Heizung ================================
$sql_hzgquery = "SELECT datum, uhrzeit, TRLsoll, TRLext, TBW
FROM heizung_daten
WHERE datum ".$zeitraum."
ORDER BY datum, uhrzeit";
$result = $mysqli->query($sql_hzgquery);
echo $mysqli->error;
while($hzgdaten = $result->fetch_array(MYSQLI_ASSOC)){
$zeit_split = explode(":", $hzgdaten['uhrzeit']);
$tstamp = $hzgdaten['datum']." ".$zeit_split[0].":".$zeit_split[1].":00";
$heizungsdaten[$tstamp] = array('TRLsoll' => $hzgdaten['TRLsoll'],
'TRList' => $hzgdaten['TRLext'],
'TBW' => $hzgdaten['TBW']);
}
//======== Zusammenführen der einzelnen Daten in ein Array ========
foreach($webdaten AS $k => $webvalues){
if(!isset($heizungsdaten[$webvalues['timestamp']]['TRLsoll'])){
$heizungsdaten[$webvalues['timestamp']]['TRLsoll'] = NULL;
}
if(!isset($heizungsdaten[$webvalues['timestamp']]['TRList'])){
$heizungsdaten[$webvalues['timestamp']]['TRList'] = NULL;
}
if(!isset($heizungsdaten[$webvalues['timestamp']]['TBW'])){
$heizungsdaten[$webvalues['timestamp']]['TBW'] = NULL;
}
$pv_heizdaten[] = array('timestamp' => $webvalues['timestamp'],
'wp_status' => $webvalues['wp_status'],
'WirkenergieSigmaL_imp' => $hzstrom[$webvalues['timestamp']]['WirkenergieSigmaL_imp'],
'Wirkleistung_hzg' => $hzstrom[$webvalues['timestamp']]['WirkleistungSigmaL'],
'Wirkleistung_haus' => $hausstrom[$webvalues['timestamp']]['WirkleistungSigmaL'],
'TRLsoll' => $heizungsdaten[$webvalues['timestamp']]['TRLsoll'],
'TRList' => $heizungsdaten[$webvalues['timestamp']]['TRList'],
'TBWist' => $heizungsdaten[$webvalues['timestamp']]['TBW'],
'TBWsoll' => $webvalues['TBWsoll']);
}
//=== zusammenhängende Datensätze im Array gruppieren ==
$i=0;
foreach($pv_heizdaten AS $k => $data){
if($k == 0){
$group_data[$i][$k] = array('timestamp' => $data['timestamp'],
'wp_status' => $data['wp_status'],
'WirkenergieSigmaL_imp' => $data['WirkenergieSigmaL_imp'],
'Wirkleistung_hzg' => $data['Wirkleistung_hzg'],
'Wirkleistung_haus' => $data['Wirkleistung_haus'],
'TRLsoll' => $data['TRLsoll'],
'TRList' => $data['TRList'],
'TBWist' => $data['TBWist'],
'TBWsoll' => $data['TBWsoll']);
} else {
$vk = $k-1;
$diff = strtotime($data['timestamp']) - strtotime($pv_heizdaten[$vk]['timestamp']);
if($diff == 60){
$group_data[$i][$k] = array('timestamp' => $data['timestamp'],
'wp_status' => $data['wp_status'],
'WirkenergieSigmaL_imp' => $data['WirkenergieSigmaL_imp'],
'Wirkleistung_hzg' => $data['Wirkleistung_hzg'],
'Wirkleistung_haus' => $data['Wirkleistung_haus'],
'TRLsoll' => $data['TRLsoll'],
'TRList' => $data['TRList'],
'TBWist' => $data['TBWist'],
'TBWsoll' => $data['TBWsoll']);
} else {
$i++;
$group_data[$i][$k] = array('timestamp' => $data['timestamp'],
'wp_status' => $data['wp_status'],
'WirkenergieSigmaL_imp' => $data['WirkenergieSigmaL_imp'],
'Wirkleistung_hzg' => $data['Wirkleistung_hzg'],
'Wirkleistung_haus' => $data['Wirkleistung_haus'],
'TRLsoll' => $data['TRLsoll'],
'TRList' => $data['TRList'],
'TBWist' => $data['TBWist'],
'TBWsoll' => $data['TBWsoll']);
}
}
}
//============== Berechnung des Verbrauchs =================================
return $group_data;
}
//========= Gibt dieses Array aus =============
Abfrage dauerte: 3 Sek.
Array
(
[0] => Array
(
[0] => Array
(
[timestamp] => 2018-05-01 11:40:00
[wp_status] => 12
[WirkenergieSigmaL_imp] => 5624.8008
[Wirkleistung_hzg] => 3.2618
[Wirkleistung_haus] => -2.4285
[TRLsoll] => 56.0
[TRList] => 34.8
[TBWist] => 49.2
[TBWsoll] =>
)
[1] => Array
(
[timestamp] => 2018-05-01 11:41:00
[wp_status] => 12
[WirkenergieSigmaL_imp] => 5624.8379
[Wirkleistung_hzg] => 3.2658
[Wirkleistung_haus] => 1.3247
[TRLsoll] => 56.0
[TRList] => 35.1
[TBWist] => 49.1
[TBWsoll] =>
)
[2] => Array
(
[timestamp] => 2018-05-01 11:42:00
[wp_status] => 12
[WirkenergieSigmaL_imp] => 5624.9043
[Wirkleistung_hzg] => 1.1184
[Wirkleistung_haus] => 0.8235
[TRLsoll] => 56.0
[TRList] => 36.0
[TBWist] => 49.2
[TBWsoll] =>
)
)
[1] => Array
(
[3] => Array
(
[timestamp] => 2018-05-01 14:38:00
[wp_status] => 12
.
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
Themen-Optionen |
|
Ansicht |
Baum-Darstellung
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 09:30:44 Uhr.
|