2011-03-21 3 views
1

PHP/AJAX 채팅 클라이언트를 만들고 있습니다. 응용 프로그램은 AJAX 요청을 PHP 스크립트에 작성하여 XML 파일의 내용을 가져오고 내용에 응답합니다. 그런 다음 클라이언트는 XML을 구문 분석하고 채팅을 표시합니다. XML 파일에는 모든 채팅이 포함되어 있지만 서버 리소스를 절약하기 위해 모든 채팅 대신 새 채팅을 반환하는 PHP 스크립트 만 좋을 것입니다. 여기 내 XML 파일입니다PHP/AJAX Long Polling : 새로운 컨텐츠를 다시 사용할 수있게 되겠습니다.

<?xml version="1.0" encoding="ISO-8859-1"?> <chat> <message> <hour>12</hour> <minute>06</minute> <half>AM</half> <day>Saturday</day> <month>March</month> <date>19th</date> <body>Hey Guys!</body> </message> <message> <hour>12</hour> <minute>08</minute> <half>AM</half> <day>Saturday</day> <month>March</month> <date>19th</date> <body>How are you?</body> </message> <message> <hour>3</hour> <minute>28</minute> <half>PM</half> <day>Saturday</day> <month>March</month> <date>19th</date> <body>Good, thanks!</body> </message> </chat>

<message> 태그는 각각의 새로운 채팅, 태그 <hour>, <minute>, <half>, <day>, <month>을 정의하고 <date> 각 채팅이 전송 된 시간을 정의하고, <body> 각 채팅을 포함 . 클라이언트가 최신 채팅의를 보낼 필요는 AJAX 요청에 <number>12</number>

  • :

    1. 각 채팅이 무엇인지 번호를 알려주는 XML 파일에 태그를 추가 :

      내가 생각 한 솔루션입니다 숫자를 PHP 스크립트에 보내서 최신인지 확인한 다음 PHP가 <number> 태그의 XML 파일을 계속 확인하여 그보다 큰 숫자가있는 경우 채팅을 반환합니다.

    이 방법이 얼마나 효과가 있을지 모르겠지만 더 좋은 방법은 없을까요? 다시, 나는 PHP 스크립트가 올 때 새로운 채팅을 원한다. 누군가 나를 도울 수 있을까? 아니면 뭔가를 할 수있는 방향으로 나를 가리켜 주시겠습니까? 감사!

  • +0

    특정 타임 스탬프를 지나서 데이터 만 수신하도록 XML을 쿼리 할 수 ​​있다면 좋을 것입니다. http://domain.com/chat.xml?id=1&time=7123612376 – Prisoner

    답변

    1

    , 나는 데이터베이스에있는 모든 채팅 메시지를 기록합니다. 그런 다음, 모든 X초 다음과 유사한 쿼리 실행 : 당신은 XML의 형식을 반환하는 독립형 스크립트에서이 작업을 마무리 할 수 ​​

    SELECT * 
    FROM chat_messages 
    WHERE chat_id = 'your-chat-id' 
    AND time_sent > 'last-time-queried' 
    ORDER BY time_sent ASC 
    

    를, 당신은 다음 칠 jQuery를 사용하는 것이. 그런 다음 콜백 매개 변수에서 반환 된 모든 XML 노드를 반복하여 요청 텍스트에 새로운 문자 행으로 삽입하십시오.

    2

    당신은 당신의 아이디어에 딱 맞습니다 만 ... 새로운 채팅을 찾고 있으면 각 요청에 대해 성장하는 XML 파일을 열 수 있습니다 ... 서버에 상당히 무거울 수 있습니다! 왜 데이터베이스를 사용하지 않을지라도 더 가볍고 XML 파일을 백엔드로 사용할 수있는 데이터베이스가있을 수 있습니다 ...

    +0

    감사합니다. 나는 그것을 조사 할 것이다! – Kincaid

    관련 문제