2011-07-04 2 views
1

나는 페이스 북과 비슷한 웹 사이트를 만들고있다. 알림 작동 방법을 실제로 알 수는 없습니다. 글쎄, 어떻게 쿼리와 함께 데이터베이스에서 얻을 수있는 알아 냈어.모델 PHP/Ajax 알림 시스템?

내가 생각하는 구조는 여러 응용 프로그램에 대한 여러 테이블이 될 것이라고 생각합니다. 예를 들어, 사진은 사진에 대한 ID, 파일 이름 및 몇 개의 사용자 ID가 '태그가 붙은'것이거나 뭔가를 추가합니다. 그 정보를 실시간으로 사용자에게 보냅니다. 나를 넘어선 것입니다.

그래서 몇 초마다 여러 개의 쿼리를 실행하여 $ _SESSION [ 'id']에 대한 데이터베이스 테이블을 검색해야합니다. 사용자의 상태는 읽지 않은 상태로 모든 응용 프로그램 테이블에서 발견됩니까?

또 다른 가능성은 모든 사용자가 자신의 테이블을 갖고 있다는 것입니다. 그게 .. 많이 .. 롤.

고유 ID 및 사용자 ID가있는 테이블에 가장 최근의 알림이 푸시 된 알림 테이블?

정말 내 머리를 감쌀 수 없습니다. 롤.

또한 알림을 실시간으로 표시 하시겠습니까? 페이스 북이 긴 폴링을 사용하고 실시간으로 알림을받는 것을 이해하지만, 여러 클라이언트에 대한 긴 설문 조사에서 5 ~ 10 개의 검색어 (각 앱에 대해)를 실행할 수 있다고 생각하지 않습니다. 서버, 맞지?

소셜 네트워크 사이트에 대한 알림 시스템을 시도하고 만들 수있는 방법에 대한 조언이나 코드가 있습니까? 그렇지 않다면 나는 어떤 종류의 실시간 이라기보다는 정적 인 알림으로 갈 것이라고 생각합니다.

다시 말하면, 모든 페이지로드에 대해 새로운 알림을 받기 위해 서버를 몇 초마다 너무 많은 부하가 걸릴 것입니까? 아약스 사용은 긴 폴링을 의미하므로 잃어 버릴 것입니다.

답변

1

롱 폴링이 답입니다. Gmail과 Facebook은 모두 실시간 알림을 위해이 방법을 사용합니다. 유일한 대안은 dataservice가있는 Flex이지만 PHP가 아닙니다.

성능 측면에서 쿼리는 한 번에 0-5 개의 알림 만 가져오고 테이블이 적절하게 인덱싱되고 쿼리가 잘 작성되면이 쿼리 중 5 개는 중요하지 않습니다 서버에 미치는 영향.

Gmail과 페이스 북에서이 작업을 수행하고있는 경우에도이 작업을 수행 할 수있는 이유가 있습니다. 물론, 모든 사용자를 지원할 수있는 서버를 보유하고 있지만, 많은 사람들이 없어서 서버 기술이 현재 제대로 작동하지 않을 것입니다. 그리고 현재 서버가로드를 처리 할 수없는 많은 사용자가 생기면 더 강력한 최신 서버에 투자하게됩니다.

1

여기 내 걸릴 것입니다.

상태, 사진 및 비디오에 대해 다른 테이블을 만들 수 있습니다. 누군가가 동영상이나 다른 사람의 의견을 듣고 좋아하는 사용자의 정보와 함께 알림을 저장하는 쿼리를 수행 할 때마다 상태 필드도 설정해야합니다 사용자가 보지 못했습니다. 사진 또는 상태가있는 페이지의 URL을 입력 할 수 있습니다. 사용자가 로그인하면 5 분마다 왼쪽의 작은 토스트 메시지에 표시되는 읽지 않은 알림을 확인하는 쿼리를 수행합니다 페이스 북처럼 화면의 하단.

토스트 메시지를 클릭하면 알림 메시지의 상태를 읽을 수 있도록 읽을 수 있습니다. 알림 메시지가 다시 나타나지 않으며 다시 성공하지 못하면 상태 업데이트가있는 페이지로 이동할 수 있습니다. 입니다.

관련 문제