Projekt

Obecné

Profil

« Předchozí | Další » 

Revize 41dd5f26

Přidáno uživatelem horkym před téměř 7 roky(ů)

refs #6943: Cron - uprava pro novou verzi databaze

Zobrazit rozdíly:

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
?>

Také k dispozici: Unified diff