Пример #1
0
 public function switch_host()
 {
     $id = $this->input['id'];
     //配置id
     if (!$id) {
         $this->errorOutput(NOID);
     }
     $is_on = $this->input['is_on'];
     //操作,1是切到备播,0是切到主控
     //获取使用该配置的所有频道标识
     $sql = "SELECT code,table_name FROM " . DB_PREFIX . "channel WHERE server_id = " . $id;
     $q = $this->db->query($sql);
     while ($row = $this->db->fetch_array($q)) {
         $codes[] = array('code' => $row['code'], 'table_name' => $row['table_name']);
     }
     /***************** 获取主备服务器信息 *******************/
     $sql = "SELECT fid,host,input_dir,ts_host FROM " . DB_PREFIX . "server_config WHERE id = " . $id . " OR fid = " . $id;
     $query = $this->db->query($sql);
     while ($row = $this->db->fetch_array($query)) {
         if (!$row['fid']) {
             $host['m_host'] = $row;
         } else {
             $host['b_host'] = $row;
         }
         //备播
     }
     include_once CUR_CONF_PATH . 'lib/nginx.live.php';
     $server = new m2oLive();
     /******************************************************/
     if ($is_on) {
         //备播服务器状态验证
         $server->init_env(array('host' => $host['b_host']['host'], 'dir' => $host['b_host']['input_dir']));
         if (!$server->get_status()) {
             $this->errorOutput('备播主机异常,不能开启');
         }
         //重写缓存
         foreach ((array) $codes as $k => $v) {
             @(include CACHE_DIR . 'channel/' . $v['code'] . '.php');
             $v['table_name'] == 'dvr' ? $tablename = 'dvr1' : ($tablename = $v['table_name'] . '_1');
             $channel_info['channel']['table_name'] = $tablename;
             $channel_info['channel']['config']['ts_host'] = $host['b_host']['ts_host'];
             file_put_contents(CACHE_DIR . 'channel/' . $v['code'] . '.php', '<?php $channel_info = ' . var_export($channel_info, 1) . ';?>');
         }
         //打开开关
         $sql = "UPDATE " . DB_PREFIX . "server_config SET is_used = 0 WHERE id = " . $id;
         $this->db->query($sql);
     } else {
         //主控服务器状态验证
         $server->init_env(array('host' => $host['m_host']['host'], 'dir' => $host['m_host']['input_dir']));
         if (!$server->get_status()) {
             $this->errorOutput('主控主机异常,不能开启');
         }
         //重建缓存
         foreach ((array) $codes as $k => $v) {
             @unlink(CACHE_DIR . 'channel/' . $v['code'] . '.php');
         }
         //关闭开关
         $sql = "UPDATE " . DB_PREFIX . "server_config SET is_used = 1 WHERE id = " . $id;
         $this->db->query($sql);
     }
 }
Пример #2
0
 private function check_server_nginx($server_info)
 {
     include_once CUR_CONF_PATH . 'lib/nginx.live.php';
     $server = new m2oLive();
     $matches = $data = array();
     preg_match("/(^[0-9]{2,})\\/control\\//i", $server_info['input_dir'], $matches);
     if (!empty($matches)) {
         $data['host'] = $server_info['host'];
         $data['dir'] = ':' . $matches[0];
     } else {
         $data = array('host' => $server_info['host'], 'dir' => $server_info['input_dir']);
     }
     $server->init_env($data);
     return $server->get_status();
 }