Ejemplo n.º 1
0
 function show()
 {
     //最多提前10秒取出切播计划
     $sql = "SELECT ccp.id, ccp.channel_id, ccp.stream_uri, ccp.type, ccp.channel2_id, (ccp.change_time + ccp.toff) AS resume_time, c.chg_id FROM " . DB_PREFIX . "channel_chg_plan ccp \r\n\t\t\t\tLEFT JOIN " . DB_PREFIX . "channel c\r\n\t\t\t\t\tON ccp.channel_id = c.id\r\n\t\t\t\tWHERE c.id > 0 AND ccp.is_exec=0 AND ccp.change_time <= " . (TIMENOW - 10);
     $q = $this->db->query($sql);
     include CUR_CONF_PATH . 'lib/channel_change.class.php';
     $channel_changes = new ChannelChange();
     $chgids = array();
     while ($row = $this->db->fetch_array($q)) {
         $ret_name = $channel_changes->channel_emergency_change($row['chg_id'], 'file', $row['stream_uri']);
         $chgids[] = $row['id'];
         if ($row['type'] == 3 || $row['type'] == 1) {
             $chg_type = array(3 => 'stream', 1 => 'file');
             $sql = "UPDATE " . DB_PREFIX . "channel SET chg2_stream_id={$row['channel2_id']}, chg_type='{$chg_type[$row['type']]}' WHERE id=" . $row['channel_id'];
             $this->db->query($sql);
         }
         $sql = 'REPLACE INTO ' . DB_PREFIX . "channel_change (channel_id, resume_time) VALUES ({$row['channel_id']}, {$row['resume_time']})";
         $this->db->query($sql);
         $this->addItem($row);
     }
     if ($chgids) {
         $sql = 'UPDATE ' . DB_PREFIX . 'channel_chg_plan SET is_exec=1 WHERE id IN (' . implode(',', $chgids) . ')';
         $this->db->query($sql);
     }
     $sql = "SELECT cc.channel_id, c.chg_id FROM " . DB_PREFIX . "channel_change cc \r\n\t\t\t\tLEFT JOIN " . DB_PREFIX . "channel c\r\n\t\t\t\t\tON cc.channel_id = c.id\r\n\t\t\t\tWHERE c.id > 0 AND cc.resume_time <= " . (TIMENOW - 5);
     $q = $this->db->query($sql);
     $chgids = array();
     while ($row = $this->db->fetch_array($q)) {
         $ret_name = $channel_changes->channel_resume($row['chg_id']);
         $chgids[] = $row['channel_id'];
         if ($row['type'] == 3 || $row['type'] == 1) {
             $sql = "UPDATE " . DB_PREFIX . "channel SET chg2_stream_id=0 WHERE id=" . $row['channel_id'];
             $this->db->query($sql);
         }
         $this->addItem($row);
     }
     if ($chgids) {
         $sql = 'UPDATE ' . DB_PREFIX . 'channel_change SET is_exec=1 WHERE channel_id IN (' . implode(',', $chgids) . ')';
         $this->db->query($sql);
     }
     $this->output();
 }
Ejemplo n.º 2
0
 public function status()
 {
     $channel_id = $this->input['channel_id'];
     if (!$channel_id) {
         return;
     }
     $sql = "select main_stream_name,stream_id,live_delay,stream_state, chg_id, chg2_stream_id, chg_type from " . DB_PREFIX . "channel where id=" . $channel_id;
     $channel_info = $this->db->query_first($sql);
     if (!$channel_info) {
         return;
     }
     include CUR_CONF_PATH . 'lib/channel_change.class.php';
     $channel_change = new ChannelChange();
     $ret = $channel_change->channel_status($channel_info['chg_id']);
     if ($channel_info['chg2_stream_id'] && $ret == 'normal') {
         $sql = "UPDATE " . DB_PREFIX . "channel SET chg2_stream_id=0 WHERE id=" . $channel_id;
         $this->db->query($sql);
     }
     if ($channel_info['chg_type'] == 'file') {
         $channel_info['chg2_stream_id'] = 0;
     }
     $channel_info['chg_status'] = $ret;
     $this->addItem($channel_info);
     $this->output();
 }