Projekt

Obecné

Profil

« Předchozí | Další » 

Revize 7cee2250

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

refs #6919: Logy

Oprava logovani v cronu. Do logu odchytavany i vyvolavane vyjimky. Pridan ukazkovy soubor (nejdrive beh OK, pote beh, kdy data uz byla v DB, pak beh, kdy data jeste nebyla ke stazeni, a na zaver beh, kdy byla spatna struktura DB).

Zobrazit rozdíly:

cron/cron.php
26 26
    // Kvuli timeoutu.
27 27
    set_time_limit(0);
28 28
    
29
    // Objekt pro logovani.
30
    $logs = new Logging();
31
    
29 32
    // Vytvoreni objektu pro komunikaci s DB.
30
    $dbh = new DB_WEB();
33
    $dbh = new DB_WEB($logs);
31 34
    $DAO = new DAO();
32 35
    $DAO->setDB($dbh);
33 36
    
34
    // Objekt pro logovani.
35
    $logs = new Logging();
36
    
37 37
    if ($date != NULL && $DAO->controlTrafficData($date->format("Y-m-d"))) {
38 38
        $logs->log(Logging::INFO, "Data k vybranemu dni (".$date->format("d.m.Y").") jeste v databazi nejsou.");
39 39
        $parser = new Parser($logs);
cron/db/db-exception.php
1 1
<?php
2 2

  
3
require_once "/../logging.php";
4

  
3 5
class DB_Exception extends Exception {
4 6
    
5
    public function __construct($message = false, $code = false) {
7
    public function __construct($logs = NULL, $message = false, $code = false) {
6 8
        if (!$message) {
7 9
            $this->message = mysql_error();
8 10
        } 
9 11
        if (!$code) {
10 12
            $this->code = mysql_errno();
11 13
        }
14
        if ($logs != NULL) {
15
            $logs->log(Logging::ERROR, $this->__toString());
16
        }
12 17
    }
13 18
    
14 19
}
cron/db/db-pdo.php
9 9
    protected $dbhost;
10 10
    protected $dbname;
11 11
    protected $dbh;
12
    
13
    protected $logs;
12 14
  
13 15
    public function __construct($user, $pass, $dbhost, $dbname) {
14 16
        $this->user = $user;
......
20 22
    protected function connect() {
21 23
        $this->dbh = new PDO("mysql:host=".$this->dbhost.";dbname=".$this->dbname.";charset=utf8", $this->user, $this->pass);
22 24
        if (!$this->dbh) {
23
            throw new DB_Exception;
25
            throw new DB_Exception($this->logs);
24 26
        }
25 27
    }
26 28
  
......
30 32
        }
31 33
        $ret = $this->dbh->query($query);
32 34
        if (!$ret) {
33
            throw new DB_Exception;
35
            throw new DB_Exception($this->logs);
34 36
        } else {
35
            $stmt = new DB_PDOStatement($this->dbh, $query);
37
            $stmt = new DB_PDOStatement($this->dbh, $query, $this->logs);
36 38
            $stmt->result = $ret;
37 39
            $stmt->number = $ret->rowCount();
38 40
            return $stmt;
......
47 49
    public $query;
48 50
    public $number;
49 51
    protected $dbh;
52
    
53
    private $logs;
50 54
  
51
    public function __construct($dbh, $query) {
55
    public function __construct($dbh, $query, $logs) {
52 56
        $this->query = $query;
53 57
        $this->dbh = $dbh;
58
        $this->logs = $logs;
54 59
        if (!$dbh) {
55
            throw new DB_Exception("Spojení s databází se nezdařilo!");
60
            throw new DB_Exception($this->logs, "Spojení s databází se nezdařilo!");
56 61
        }
57 62
    }
58 63
  
59 64
    public function fetchAssoc() {
60 65
        if (!$this->result) {
61
            throw new DB_Exception("Dotaz nebyl vykonán!");
66
            throw new DB_Exception($this->logs, "Dotaz nebyl vykonán!");
62 67
        }
63 68
        return $this->result->fetch(PDO::FETCH_ASSOC);
64 69
    }
cron/db/db-web.php
8 8
    protected $pass = "";
9 9
    protected $dbhost = "localhost";
10 10
    protected $dbname = "prujezd_vozidel";
11
    
12
    protected $logs = NULL;
11 13
  
12
    public function __construct() {
14
    public function __construct($logs) {
15
        $this->logs = $logs;
13 16
    }
14 17
     
15 18
}
cron/log/cron.txt
1
21.05.2018 21:08:55.799
1
22.05.2018 23:30:19.506
2 2
--- INFO ---
3
Data k vybranemu dni jeste v databazi nejsou.
3
Data k vybranemu dni (21.05.2018) jeste v databazi nejsou.
4 4

  
5
21.05.2018 21:08:55.811
5
22.05.2018 23:30:19.518
6 6
--- INFO ---
7
ZACATEK PROCEDURY pro den 20.05.2018.
7
ZACATEK PROCEDURY pro den 21.05.2018.
8 8

  
9
21.05.2018 21:09:01.904
9
22.05.2018 23:30:25.832
10 10
--- INFO ---
11 11
Stazeni archivu probehlo v poradku.
12 12

  
13
21.05.2018 21:09:02.588
13
22.05.2018 23:30:26.887
14 14
--- INFO ---
15 15
Extrahovani archivu v poradku dokonceno.
16 16

  
17
21.05.2018 21:09:02.598
17
22.05.2018 23:30:26.897
18 18
--- INFO ---
19 19
Zpracovavani zaznamu o doprave.
20 20

  
21
21.05.2018 21:11:08.933
21
22.05.2018 23:33:56.540
22 22
--- INFO ---
23 23
Zpracovavani zaznamu o lokacich.
24 24

  
25
21.05.2018 21:11:08.945
25
22.05.2018 23:33:56.552
26 26
--- INFO ---
27 27
Odstranovani slozky s extrahovanymi daty.
28 28

  
29
21.05.2018 21:11:08.969
29
22.05.2018 23:33:56.584
30 30
--- INFO ---
31 31
KONEC PROCEDURY.
32 32

  
33
21.05.2018 21:22:56.954
33
22.05.2018 23:51:45.080
34 34
--- WARNING ---
35
Pro vybrany den (20.05.2018) jiz data v databazi jsou.
35
Pro vybrany den (21.05.2018) jiz data v databazi jsou.
36

  
37
23.05.2018 00:02:20.633
38
--- INFO ---
39
Data k vybranemu dni (22.05.2018) jeste v databazi nejsou.
40

  
41
23.05.2018 00:02:20.644
42
--- INFO ---
43
ZACATEK PROCEDURY pro den 22.05.2018.
44

  
45
23.05.2018 00:02:21.236
46
--- WARNING ---
47
Pro dany datum neexistuji data.
48

  
49
23.05.2018 00:02:21.248
50
--- INFO ---
51
KONEC PROCEDURY.
52

  
53
23.05.2018 00:10:05.350
54
--- ERROR ---
55
exception 'DB_Exception' in C:\Program Files (x86)\EasyPHP-12.1\www\cron\db\db-pdo.php:35
56
Stack trace:
57
#0 C:\Program Files (x86)\EasyPHP-12.1\www\cron\dao\dao.php(40): DB_PDO->executeQuery('SELECT COUNT(*)...')
58
#1 C:\Program Files (x86)\EasyPHP-12.1\www\cron\cron.php(37): DAO->controlTrafficData('2018-05-21')
59
#2 C:\Program Files (x86)\EasyPHP-12.1\www\cron\cron.php(21): cron_procedure(Object(DateTime))
60
#3 C:\Program Files (x86)\EasyPHP-12.1\www\cron\index.php(9): cron()
61
#4 {main}
36 62

  

Také k dispozici: Unified diff