채팅방에 항상 열려 있는 방이 있으면 좋겠습니다.
페이지 정보
작성자 강백호 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 댓글 2건 조회 13,092회 작성일 09-05-17 20:49본문
서버가 렉이 걸리면 가끔 방에서 팅하는 문제가 있는데... 이건 서버 문제인듯 싶구요.
위처럼 채팅방에 기존 방(항상 떠있는 방)을 만들어 넣으려면 어떻게 하면 되나요?
채팅방을 운영해본 결과 기존방이 없으면 사람들이 만날 확율이 거의 없더라구요^^
이런 기능이 있으면 좋을듯 싶어서 적어봤습니다.
|
댓글목록
MintState님의 댓글
MintState 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 작성일
프로그램에대한 이해가 있으신것 같으니 간단히 설명 드리겠습니다.
테스트 하지는 않고 소스보고 설명 드리는 것입니다.
우선 chat의 방은 생성되면서 time 값이 기록 됩니다. mint_chat_room 테이블의 room_regdate 필드 입니다.
몇가지 이밴트 발생시 이값을 비교해서 방을 유지시키거나 닫거나 합니다.
그러니 이 방을 닫는 스크립트만 무력화 시키면 방이 유지 됩니다.
이때 임의로 열어 놓은 방을 체크하기 위해 mint_chat_room 테이블에 임의의 필드 A를 추가 시켜 A에 값이 있으면 임의의 방이라는 것을 명시 합니다.
소스 짜놓은지 좀 되어서 기억이 잘 안나지만 그 부분을 설명 드리겠습니다.
1. chat_roomInfoBox.php
아래 스크립트에 필드가 A라면 작동하지 않게 합니다.
$closeRoom_sql = "UPDATE `".$Mint[DB_chat]."_room` SET room_open='1' WHERE room_id='$_GET[RoomID]' ";
$closeRoom_sel = @mysql_query($closeRoom_sql);
$closeData_sql = "UPDATE `".$Mint[DB_chat]."_data` SET chat_open='1' WHERE room_id='$_GET[RoomID]' ";
$closeData_sel = @mysql_query($closeData_sql);
echo "<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\"><script>parent.closedChat();</script>"; exit;
2. chat_room.php
위와 마찬가지로 하시면 됩니다.
$closeRoom_sql = "UPDATE `".$Mint[DB_chat]."_room` SET room_open='1' WHERE room_id='$room[room_id]' ";
$closeRoom_sel = @mysql_query($closeRoom_sql);
$closeData_sql = "UPDATE `".$Mint[DB_chat]."_data` SET chat_open='1' WHERE room_id='$room[room_id]' ";
$closeData_sel = @mysql_query($closeData_sql);
echo "<meta http-equiv=\"content-type\" content=\"text/html; charset=".$g4[charset]."\"><script>alert('존재하지 않는 채팅방입니다.');opener.document.location.reload();window.close();</script>"; exit;
3. chat_act.php
채팅창을 종료시키는 부분에서 아래와 같은 부분이 있습니다. 이 부분도 처리 해주면 됩니다.
$closeRoom_sql = "UPDATE `".$Mint[DB_chat]."_room` SET room_open='1' WHERE room_id='$_POST[RoomID]' ";
$closeRoom_sel = @mysql_query($closeRoom_sql);
$closeData_sql = "UPDATE `".$Mint[DB_chat]."_data` SET chat_open='1' WHERE room_id='$_POST[RoomID]' ";
$closeData_sel = @mysql_query($closeData_sql);
이정도 인것 같은데 한번 설정해 보시고 나머지 있을지 모를 버그를 찾아 보시면 될 것 같네요.
강백호님의 댓글
강백호 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 작성일빠른 답변 감사합니다. 내일쯤 테스트해보고 경과 보고 드리겠습니다.