웹마스터 팁

몇몇 분들이 저에게 다중서버정보를 어떻게 알아내느냐는 메일을 보내셔서
이렇게 정보를 공유하겠습니다

방송정보 알아내기 구조체 화일 (winamp_cast_information.php) 내용

<?



class winamp_cast_information {

          var $now_listen;
                  var $max_listen_persons;
          var $cast_title;
                  var $cast_song;

     # 단일서버 정보 얻어 오기 메소드 시작
        function winamp_cast($cast_ip){

          $listen = $this->winamp_shoutcast_listen($cast_ip);            

               # 현재 청취자수 와 최대청취할수 있는 인원
               $this->now_listen += $listen[0];
                           $this->max_listen_persons +=  $listen[1];  
              
                           $cast_info = $this->winamp_shoutcast_info($cast_ip);

               $this->cast_title = $this->str_re("title",$cast_info[title]);
                           $this->cast_song =  $this->str_re("song",$cast_info[song]);

              

        }
      # 단일서버 정보 얻어 오기 메소드 시작  


     # 멀티방송 서버 정보 얻어 오기 메소드 시작
      function winamp_cast_array_list($array_cast_ip_list){

            for($i=0;$i < sizeof($array_cast_ip_list);$i++){  
                        
                          $server_ip =  $array_cast_ip_list[$i];
                                

               $listen = $this->winamp_shoutcast_listen($server_ip);            

               # 현재 청취자수 와 최대청취할수 있는 인원
               $this->now_listen += $listen[0];
                           $this->max_listen_persons +=  $listen[1];  
              
                           $cast_info = $this->winamp_shoutcast_info($server_ip);

               $this->cast_title = $this->str_re("title",$cast_info[title]);
                           $this->cast_song =  $this->str_re("song",$cast_info[song]);

                         }
          
           }
      # 멀티방송 서버 정보 얻어 오기 메소드 끝



     ### 방송정보를 알아내는 메소드 시작 - 방송제목(title), 현재곡(song) ###
     function winamp_shoutcast_info($server_ip){

                  $server_ip = str_replace("http://", "", $server_ip);
                  $server_ip = str_replace("/", "", $server_ip);  

                  $info = array();

                  # 방송주소을 (:)으로 주소(ip)와 포트(port)로 나눈다
                  $addre = explode(":","$server_ip");

                  $address = $addre[0];
                  $port = $addre[1];

                  $fp1 = fsockopen("$address", $port, $errno, $errstr);

                   #문단 1 시작
                  if(!$fp1){
                                          
                                          $info[ok] = 0;

                     #문단 1 끝
                                         #문단 2 시작
                     }else{

                      $info[ok] = 1;

                         # 소켓을 이용해서 서버에 html 형태로 테이타를 보내라고 명령한다
                     fputs ($fp1, "GET /index.html HTTP/1.0nUser-Agent: Mozilla/4.0nn");

                    # 소켓의 마지막(eof) 까지 데이타를 읽는다(1024바이트씩)
                    while(!feof($fp1)){
        
                            $end .= fgets($fp1,1024);

                              }                                

                   # 소켓을 닫는다
                   fclose($fp1);

                  $end = strip_tags ("$end");

                  if(eregi("(([1-9]){2,3}) kbps",$end,$arr)){
                  $info[kbps] =  $arr[1];
                   }
      

         # $end 부분에서 방송제목과 장르, 홈주소 그리고 지금나오는 음악제목를 얻는다  
            #array("URL:","Stream")
       #array("Genre:","Stream")

      $info_spl = array(array("Title:","Stream Genre:"),array("Song:","Copyright"));

      $val = array("title","song");


     for($i=0;$i<2;$i++){

          $one = explode ($info_spl[$i][0], $end);
          $two = explode($info_spl[$i][1],$one[1]);

          $info[$val[$i]] = $two[0];

          $end = $one[1];

      }

    
      #문단 2 끝
         }

# 결과 리턴
return $info;


}  
### 방송정보를 알아내는 메소드 끝 - 방송제목(title), 현재곡(song) ###

     # 청취자수 알아내는 메소드 시작
     function winamp_shoutcast_listen($server_ip){

          $listen = array();

          $server_ip = str_replace("http://", "", $server_ip);
          $server_ip = str_replace("/", "", $server_ip);  

          # 방송주소을 (:)으로 주소(ip)와 포트(port)로 나눈다
          $addre = explode(":","$server_ip");
  
          $address = $addre[0];
          $port = $addre[1];

          $fp1 = fsockopen("$address", $port, $errno, $errstr);

          #문단 1 시작
          if(!$fp1){
                          
                          # 청취자수
                  $listen[0] =  0;
                  
                                  # 최대 청취자수
                                  $listen[1] =  0;

          #문단 1 끝
                  #문단 2 시작
          }else{

                  # 소켓을 이용해서 서버에 html 형태로 테이타를 보내라고 명령한다
              fputs ($fp1, "GET /index.html HTTP/1.0nUser-Agent: Mozilla/4.0nn");

             # 소켓의 마지막(eof) 까지 데이타를 읽는다(1024바이트씩)
             while(!feof($fp1)){
        
                      $end .= fgets($fp1,1024);

                 }                                

            # 소켓을 닫는다
            fclose($fp1);

            $end = strip_tags ("$end");

           if(eregi("with (([0-9]){1,}) of (([0-9]){1,}) listeners",$end,$arr)){
                  
                                  # 청취자수
                  $listen[0] =  $arr[1];
                  
                                  # 최대 청취자수
                                  $listen[1] =  $arr[3];
                          
                           }  
  
         #문단 2 끝
         }

       # 결과 리턴
       return $listen;

   # 청취자수 알아내는 메소드 끝
   }
  
     function str_re($what,$value){
      
         if($what == "title"){

            $end = str_replace("Content Type: audio/mpeg","", $value);

         }else if($what == "song"){

                     $end = str_replace("Written by Stephen 'Tag Loomis, Tom Pepper and Justin Frankel","", $value);
                
                 }

    
       return $end;
    
}




}


?>

방송정보 알아내기 객체를 생성 정보를 알아내는 소스 (winamp_info.php) 내용

<?

# mysql_db 구조체를 만들어놓은 화일 읽어
include("winamp_cast_information.php");

# 새로운 객체($mysqldb)를 생성
$winamp = new winamp_cast_information;

# Mycast(My portrait of Youthful day) 방송국 방송 주소
$cast_ip = "http://218.145.30.154:11100";

$winamp->winamp_cast($cast_ip);

echo "청취자수 : ";
echo $winamp->now_listen;
echo "<br>";
echo "최대가능청취자수 : ";
echo $winamp->max_listen_persons;
echo "<br>";
echo "방송제목 : ";
echo $winamp->cast_title;
echo "<br>";
echo "현재나가는곡 : ";
echo $winamp->cast_song;
echo "<br><br>";


# 뮤클케스트 방송국 방송 주소들
$cast_ip_array = array();

$cast_ip_array[0] = "http://cast1.mukulcast.com:11000";
$cast_ip_array[1] = "http://cast2.mukulcast.com:11000";
$cast_ip_array[2] = "http://cast3.mukulcast.com:11000";

$winamp->winamp_cast_array_list($cast_ip_array);

echo "청취자수 : ";
echo $winamp->now_listen;
echo "<br>";
echo "최대가능청취자수 : ";
echo $winamp->max_listen_persons;
echo "<br>";
echo "방송제목 : ";
echo $winamp->cast_title;
echo "<br>";
echo "현재나가는곡 : ";
echo $winamp->cast_song;


?>

이상 끝!!

젊은날의 초상 My portrait of Youthful day  MyCast  웹디팀 MyWD연필(흑심품은연필)......
방송주소 - http://218.145.30.154:11100/
제목 글쓴이 날짜
개판 오분전 세션 - 6 미친개 2003.04.08
개판 오분전 세션 - 5 미친개 2003.04.08
개판 오분전 세션 - 4 미친개 2003.04.08
개판 오분전 세션 - 3 [4] 미친개 2003.04.08
개판 오분전 세션 - 2 [4] 미친개 2003.04.08
개판 오분전 세션 - 1 [7] 미친개 2003.04.08
객체를 이용한 winamp 방송정보 알아내는 소스 [4] 흑심품은연필 2003.04.07
내 홈피도 채널을?! #1 [16] (' _ ') napclub 2003.03.31
이젠 주소검색 편하게쓰자~~~!! (새창띄우지 않습니다) [5] _-=Knight=-_ 2003.03.05
메일 인증시 기존 회원 전부 인증걸기;;; [4] teslaMINT 2003.03.04
게시판 통체 인클루드 하기 [12] 깜보 2003.03.02
여러분이 원하시던 로또복권 소스공개~ [12] Dopesoul 2003.02.22
NZEO 이메일 인증 따라하기 [또 수정 --;] [44] file teslaMINT 2003.02.22
계정이 php를 지원하는지아닌지 잘 모를때... [16] 격투왕맹호 2003.02.19
유용한 함수 몇가지...;;;; [7] Yuki-H. 2003.02.19
PHP,자바스크립트 제 3탄! 아래에 헤더로 asx감추기를 이용한 PHP무비 플레이어! file ☆좀비파우더™ 2003.02.16
DB를 이용한 현재접속자 수 구하기 [6] 김현석 2003.02.14
[초간단] 헤더로 asx 파일 음악 주소를 숨겨봐요. [9] 모라미 2003.02.14
제로보드 스킨들이 어느 게시판에 쓰이는지 알아보는 소스 [12] teslaMINT 2003.02.11
V3 neo+ 항상 최신버전으로 자동링크시키기 [7] 김현석 2003.02.08