Revize 41dd5f26
Přidáno uživatelem horkym před téměř 7 roky(ů)
cron/cron.php | ||
---|---|---|
51 | 51 |
} |
52 | 52 |
|
53 | 53 |
// Pridat zaznamy z vybraneho dne. |
54 |
$insertDate = array(); |
|
54 | 55 |
$insertRTT = array(); |
55 | 56 |
$insertRT = array(); |
56 | 57 |
$insertOneDay = array(); |
57 |
process_traffic_matrix($parser, $traffic, $trafficOneDay, $DAO->findFirstId("zaznam_cas"), $DAO->findFirstId("zaznam"), $DAO->findFirstId("zaznam_prum_den"), $insertRTT, $insertRT, $insertOneDay, $date->format("Y-m-d"));
|
|
58 |
$DAO->insertTrafficData($insertRTT, $insertRT, $insertOneDay); |
|
58 |
process_traffic_matrix($parser, $traffic, $trafficOneDay, $DAO->findFirstId("datum"), $DAO->findFirstId("zaznam_cas"), $DAO->findFirstId("zaznam"), $DAO->findFirstId("zaznam_prum_den"), $insertDate, $insertRTT, $insertRT, $insertOneDay, $date->format("Y-m-d"));
|
|
59 |
$DAO->insertTrafficData($insertDate, $insertRTT, $insertRT, $insertOneDay);
|
|
59 | 60 |
} else if ($date != NULL) { |
60 | 61 |
// Data pro vybrany den uz v databazi jsou. |
61 | 62 |
$logs->log(Logging::WARNING, "Pro vybrany den (".$date->format("d.m.Y").") jiz data v databazi jsou."); |
cron/dao/dao.php | ||
---|---|---|
12 | 12 |
} |
13 | 13 |
|
14 | 14 |
public function insertVehicles() { |
15 |
$query = "SELECT COUNT(*) AS total FROM vozidla";
|
|
15 |
$query = "SELECT COUNT(*) AS total FROM vozidlo";
|
|
16 | 16 |
$stmt = $this->dbh->executeQuery($query); |
17 | 17 |
|
18 | 18 |
if ($stmt->fetchAssoc()["total"] < 1) { |
19 |
// Pokud v tabulce s vozidlama neni zadny zaznam, pridat vsechny moznosti.
|
|
20 |
$query = "INSERT INTO vozidla (id, nazev) VALUES ";
|
|
19 |
// Pokud v tabulce s vozidly neni zadny zaznam, pridat vsechny moznosti.
|
|
20 |
$query = "INSERT INTO vozidlo (id, nazev) VALUES ";
|
|
21 | 21 |
$query .= "('0', 'Neznámé vozidlo'), "; |
22 | 22 |
$query .= "('1', 'Motocykl'), "; |
23 | 23 |
$query .= "('2', 'Auto'), "; |
... | ... | |
36 | 36 |
public function controlTrafficData($dateStr) { |
37 | 37 |
$dateTo = new DateTime($dateStr); |
38 | 38 |
$dateTo->modify("+1 day"); |
39 |
$query = "SELECT COUNT(*) AS total FROM zaznam_cas WHERE datetime_od >= '$dateStr' AND datetime_od < '".$dateTo->format('Y-m-d')."';";
|
|
39 |
$query = "SELECT COUNT(*) AS total FROM datum WHERE od >= '$dateStr' AND od < '".$dateTo->format('Y-m-d')."';";
|
|
40 | 40 |
$stmt = $this->dbh->executeQuery($query); |
41 | 41 |
return $stmt->fetchAssoc()["total"] < 1; |
42 | 42 |
} |
43 | 43 |
|
44 |
public function insertTrafficData($insertRTT, $insertRT, $insertOneDay) { |
|
45 |
for ($i = 0; $i < 3; $i++) {
|
|
44 |
public function insertTrafficData($insertDate, $insertRTT, $insertRT, $insertOneDay) {
|
|
45 |
for ($i = 0; $i < 4; $i++) {
|
|
46 | 46 |
$query = ""; |
47 | 47 |
$values = ""; |
48 | 48 |
$counter = 0; |
49 | 49 |
$array = NULL; |
50 | 50 |
|
51 | 51 |
if ($i == 0) { |
52 |
$query = "INSERT INTO datum VALUES "; |
|
53 |
$array = &$insertDate; |
|
54 |
} else if ($i == 1) { |
|
52 | 55 |
$query = "INSERT INTO zaznam_cas VALUES "; |
53 | 56 |
$array = &$insertRTT; |
54 |
} else if ($i == 1) {
|
|
57 |
} else if ($i == 2) {
|
|
55 | 58 |
$query = "INSERT INTO zaznam VALUES "; |
56 | 59 |
$array = &$insertRT; |
57 | 60 |
} else { |
... | ... | |
62 | 65 |
for ($j = 0; $j < count($array); $j++) { |
63 | 66 |
$values .= $array[$j].", "; |
64 | 67 |
$counter++; |
65 |
if ($counter == 500 || $j == (count($array) - 1)) {
|
|
68 |
if ($counter == 1000 || $j == (count($array) - 1)) {
|
|
66 | 69 |
$query_ = $query.substr($values, 0, strlen($values) - 2).";"; |
67 | 70 |
$stmt = $this->dbh->executeQuery($query_); |
68 | 71 |
|
cron/parser.php | ||
---|---|---|
105 | 105 |
for ($i = 0; $i < 2; $i++) { |
106 | 106 |
$this->trafficOneDay[$t->device][$i] = array(); |
107 | 107 |
for ($j = 0; $j < 11; $j++) { |
108 |
$this->trafficOneDay[$t->device][$i][$j] = array(0, 0); // Pocet danych vozidel, suma jejich rychlosti.
|
|
108 |
$this->trafficOneDay[$t->device][$i][$j] = array(0, 0, 0); // Pocet danych vozidel, suma jejich rychlosti a pocet vozidel u kterych nesla stanovit rychlost.
|
|
109 | 109 |
} |
110 | 110 |
} |
111 | 111 |
|
... | ... | |
122 | 122 |
for ($i = 0; $i < 2; $i++) { |
123 | 123 |
$this->traffic[$t->device][$interval][$i] = array(); |
124 | 124 |
for ($j = 0; $j < 11; $j++) { |
125 |
$this->traffic[$t->device][$interval][$i][$j] = array(0, 0); // Pocet danych vozidel, suma jejich rychlosti.
|
|
125 |
$this->traffic[$t->device][$interval][$i][$j] = array(0, 0, 0); // Pocet danych vozidel, suma jejich rychlosti a pocet vozidel u kterych nesla stanovit rychlost.
|
|
126 | 126 |
} |
127 | 127 |
} |
128 | 128 |
} |
129 | 129 |
|
130 |
// Ulozeni dulezitych informaci o danem zaznamu. |
|
131 |
$this->traffic[$t->device][$interval][$t->direction][$t->type10][0]++; |
|
132 |
$this->traffic[$t->device][$interval][$t->direction][$t->type10][1] += $t->speed; |
|
133 |
|
|
134 |
// Ulozeni i do pole s prumery za cely den. |
|
135 |
$this->trafficOneDay[$t->device][$t->direction][$t->type10][0]++; |
|
136 |
$this->trafficOneDay[$t->device][$t->direction][$t->type10][1] += $t->speed; |
|
130 |
// Ulozeni dulezitych informaci o danem zaznamu do pole s casovymi intervaly a i do pole se zaznamy za cely den. |
|
131 |
if ($t->speed < 1) { |
|
132 |
$this->traffic[$t->device][$interval][$t->direction][$t->type10][2]++; |
|
133 |
$this->trafficOneDay[$t->device][$t->direction][$t->type10][2]++; |
|
134 |
} else { |
|
135 |
$this->traffic[$t->device][$interval][$t->direction][$t->type10][0]++; |
|
136 |
$this->traffic[$t->device][$interval][$t->direction][$t->type10][1] += $t->speed; |
|
137 |
$this->trafficOneDay[$t->device][$t->direction][$t->type10][0]++; |
|
138 |
$this->trafficOneDay[$t->device][$t->direction][$t->type10][1] += $t->speed; |
|
139 |
} |
|
137 | 140 |
} |
138 | 141 |
|
139 | 142 |
private function download($date, $zipUrl, $dir, $downloaded) { |
cron/process_traffic_matrix.php | ||
---|---|---|
1 | 1 |
<?php |
2 | 2 |
|
3 |
function process_traffic_matrix($parser, $traffic, $trafficOneDay, $idRecordTimeTable, $idRecordTable, $idRecordOneDayTable, &$insertRTT, &$insertRT, &$insertOneDay, $date) {
|
|
3 |
function process_traffic_matrix($parser, $traffic, $trafficOneDay, $idDateTable, $idRecordTimeTable, $idRecordTable, $idRecordOneDayTable, &$insertDate, &$insertRTT, &$insertRT, &$insertOneDay, $date) {
|
|
4 | 4 |
$times = array(); |
5 | 5 |
|
6 |
// Rekonstrukce casovych intervalu. |
|
6 | 7 |
for ($i = 0; $i < $parser->HOW_MANY_INTERVALS; $i++) { |
7 | 8 |
$times[$i] = array(); |
8 | 9 |
$times[$i][0] = new DateTime($date); |
... | ... | |
23 | 24 |
$times[$i][1]->setTime($toHours, $toMinutes, $toSeconds); |
24 | 25 |
} |
25 | 26 |
|
27 |
// Priprava dat pro naplneni tabulek zaznam a zaznam_cas. |
|
26 | 28 |
foreach ($traffic as $device => $timeIntervals) { |
27 | 29 |
for ($t = 0; $t < $parser->HOW_MANY_INTERVALS; $t++) { |
28 | 30 |
if ($timeIntervals[$t] != NULL) { |
... | ... | |
30 | 32 |
$dataExists = FALSE; |
31 | 33 |
|
32 | 34 |
for ($v = 0; $v < 11; $v++) { |
33 |
if ($timeIntervals[$t][$d][$v][0] > 0) { |
|
35 |
$count_ = $timeIntervals[$t][$d][$v][0] + $timeIntervals[$t][$d][$v][2]; |
|
36 |
if ($count_ > 0) { |
|
34 | 37 |
$dataExists = TRUE; |
35 |
$insertRT[] = "('".$idRecordTable++."', '".$timeIntervals[$t][$d][$v][0]."', '".($timeIntervals[$t][$d][$v][1] / $timeIntervals[$t][$d][$v][0])."', '$v', '$idRecordTimeTable')"; |
|
38 |
$speed_ = -1.0; |
|
39 |
|
|
40 |
if ($timeIntervals[$t][$d][$v][0] > 0) { |
|
41 |
$speed_ = $timeIntervals[$t][$d][$v][1] / (double) $timeIntervals[$t][$d][$v][0]; |
|
42 |
} |
|
43 |
|
|
44 |
$insertRT[] = "('".$idRecordTable++."', '$count_', '$speed_', '$v', '$idRecordTimeTable')"; |
|
36 | 45 |
} |
37 | 46 |
} |
38 | 47 |
|
39 | 48 |
if ($dataExists) { |
40 |
$insertRTT[] = "('".$idRecordTimeTable++."', '".$times[$t][0]->format("Y-m-d H:i:s.u")."', '".$times[$t][1]->format("Y-m-d H:i:s.u")."', '".($d + 1)."', '$device')";
|
|
49 |
$insertRTT[] = "('".$idRecordTimeTable++."', '".($d + 1)."', '$device', '".($idDateTable + $t)."')";
|
|
41 | 50 |
} |
42 | 51 |
} |
43 | 52 |
} |
44 | 53 |
} |
45 | 54 |
} |
46 | 55 |
|
56 |
// Priprava dat pro naplneni tabulky datum. Budou vlozeny veskere casove intervaly. Je nemozne, aby neexistovalo alespon jedno zarizeni, |
|
57 |
// ktere v dany casovy interval detekuje alespon jeden dopravni prostredek. I kdyby takova situace nastala, dane intervaly take mohou |
|
58 |
// slouzit pro pouziti ve statistikach. |
|
59 |
for ($i = 0; $i < $parser->HOW_MANY_INTERVALS; $i++) { |
|
60 |
$insertDate[] = "('".$idDateTable++."', '".$times[$i][0]->format("Y-m-d H:i:s")."', '".$times[$i][1]->format("Y-m-d H:i:s")."')"; |
|
61 |
} |
|
62 |
|
|
63 |
// Priprava dat pro naplneni tabulky zaznam_prum_den. |
|
47 | 64 |
foreach ($trafficOneDay as $device => $direction) { |
48 | 65 |
for ($d = 0; $d < 2; $d++) { |
49 | 66 |
for ($v = 0; $v < 11; $v++) { |
50 |
if ($direction[$d][$v][0] > 0) { |
|
51 |
$insertOneDay[] = "('".$idRecordOneDayTable++."', '".$direction[$d][$v][0]."', '".($direction[$d][$v][1] / $direction[$d][$v][0])."', '$date', '".($d + 1)."', '$device', '$v')"; |
|
67 |
$count_ = $direction[$d][$v][0] + $direction[$d][$v][2]; |
|
68 |
if ($count_ > 0) { |
|
69 |
$speed_ = -1.0; |
|
70 |
if ($direction[$d][$v][0] > 0) { |
|
71 |
$speed_ = $direction[$d][$v][1] / (double) $direction[$d][$v][0]; |
|
72 |
} |
|
73 |
$insertOneDay[] = "('".$idRecordOneDayTable++."', '$count_', '$speed_', '".($d + 1)."', '$device', '$v', '$idDateTable')"; |
|
52 | 74 |
} |
53 | 75 |
} |
54 | 76 |
} |
55 | 77 |
} |
56 | 78 |
|
79 |
// Priprava posledniho zaznamu ke vlozeni do tabulky datum (cely den - vzdy bude alespon jeden udaj). |
|
80 |
$timeFrom = new DateTime($date); |
|
81 |
$timeFrom->setTime(0, 0, 0); |
|
82 |
$timeTo = new DateTime($date); |
|
83 |
$timeTo->setTime(0, 0, 0); |
|
84 |
$timeTo->modify("+1 day"); |
|
85 |
$insertDate[] = "('$idDateTable', '".$timeFrom->format("Y-m-d H:i:s")."', '".$timeTo->format("Y-m-d H:i:s")."')"; |
|
86 |
|
|
57 | 87 |
} |
58 | 88 |
|
59 | 89 |
?> |
cron/traffic.php | ||
---|---|---|
27 | 27 |
// $this->intensity = $data[2]; |
28 | 28 |
// $this->intensityN = $data[3]; |
29 | 29 |
// $this->occupancy = $data[4]; |
30 |
$this->speed = $data[5]; |
|
31 |
$this->state = $data[6]; |
|
30 |
$this->speed = (double) $data[5];
|
|
31 |
$this->state = (int) $data[6];
|
|
32 | 32 |
// $this->type = $data[7]; |
33 | 33 |
// $this->duration = $data[8]; |
34 | 34 |
// $this->history = $data[9]; |
35 |
$this->type10 = $data[10]; |
|
35 |
$this->type10 = (int) $data[10];
|
|
36 | 36 |
} |
37 | 37 |
|
38 | 38 |
} |
Také k dispozici: Unified diff
refs #6943: Cron - uprava pro novou verzi databaze