colly_wyx
2018-06-14 bef2c06923d3ba6727654f734bb93d5a09855dc5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
<?php
 
class Model_Task_TaskProgress extends PhalApi_Model_NotORM {
 
    const STATE_WAITTING = 0;
    const STATE_RUNNING = 1;
    const STATE_EXCEPTION = -1;
 
    const ENABLE_ON = 1;
    const ENABLE_OFF = 0;
 
    protected function getTableName($id = NULL) {
        return 'task_progress';
    }
 
    public function getWrongItems($maxLastFireTime) {
        $rows = $this->getORM()
            ->select('id, title')
            ->where('state != ?', self::STATE_WAITTING)
            ->where('last_fire_time < ?', $maxLastFireTime)
            ->where('enable = ?', self::ENABLE_ON)
            ->order('last_fire_time ASC')
            ->fetchAll();
 
        return !empty($rows) ? $rows : array();
    }
 
    public function resetWrongItems($id) {
        return $this->update($id, array('state' => self::STATE_WAITTING));
    }
 
    public function getAllWaittingItems() {
        $rows = $this->getORM()
            ->select('id, title, trigger_class, fire_params')
            ->where('state', self::STATE_WAITTING)
            ->where('interval_time + last_fire_time < ?', $_SERVER['REQUEST_TIME'])
            ->where('enable = ?', self::ENABLE_ON)
            ->fetchAll();
 
        return !empty($rows) ? $rows : array();
    }
 
    public function isRunnable($id) {
        $row = $this->get($id, 'enable, state');
 
        if (empty($row)) {
            return FALSE;
        }
 
        return ($row['state'] == self::STATE_WAITTING && $row['enable'] == self::ENABLE_ON) ? TRUE : FALSE;
    }
 
    public function setRunningState($id) {
        return $this->update($id, array('state' => self::STATE_RUNNING));
    }
 
    public function updateFinishItem($id, $result) {
        $data = array(
            'result' => json_encode($result),
            'state' => self::STATE_WAITTING,
            'last_fire_time' => $_SERVER['REQUEST_TIME'],
        );
 
        return $this->update($id, $data);
    }
 
    public function updateExceptionItem($id, $errorMsg) {
        $data = array(
            'result' => $errorMsg,
            'state' => self::STATE_EXCEPTION,
            'last_fire_time' => $_SERVER['REQUEST_TIME'],
        );
 
        return $this->update($id, $data);
    }
}