2013-10-22 5 views
-1

고유 한 번호 (1, 2, 3, ... 등)가 각 방문자에게 표시되는 웹 사이트에서 페이지를 만들고 싶습니다.각 방문자의 고유 번호를 표시 하시겠습니까?

예를 들어 방문자 A가 미소 지음을 연결하면 숫자 "1"이 표시됩니다. 그런 다음 방문자 B가 동시에 연결하면 숫자 "2"가 표시됩니다.

하지만 어려운 부분이 있습니다. 방문자 A가 웹 사이트에서 연결을 끊으면 다음 방문자 (C)는 페이지에 숫자 1이 표시됩니다 (다른 방문자가 연결되어 있지 않은 경우).

"프로그래밍의 하느님"이이 일을하는 데 도움이 될 수 있습니까?

고맙습니다. Chris.

+0

코드 작성을위한 "프로그래밍의 신"이 없습니다. 먼저 뭔가를 시도하고 뭔가가 붙어 있으면 질문하십시오. –

+0

안녕하세요 User016, 답변 해 주셔서 감사합니다. 나는하고 싶지만 어떻게해야할지 모르겠다. 나는 누군가가 나를 위해 그것을 코드하기를 기대하지 않는다. 나는 어떤 도움을 원한다. (어떻게해야하는지 알려줄 수있는 누군가 :) – user2856591

+0

데이터베이스의 어떤 형태로든 고유 번호를 유지해야한다. –

답변

0

웹 사이트에 "연결"및 "연결 해제"하지 마십시오. 페이지를 가져 오기 위해 HTTP 호출을하면 더 이상의 통신이 없습니다. 각 HTTP 호출은 별도의 연결 및 연결 끊기입니다.

하지만 AJAX를 사용하여 매초마다 다시 확인하여 서버에 "아직 있음"을 알릴 수 있습니다. (하트 비트 신호처럼)

할 수는 있지만 우아하지는 않습니다.

질문 (1) : 경우 어떻게 : A가 1을 얻는다, B 2를 가져, A "연결 해제"가, C가 나올까요 1 또는 3? ...

시도 :

사용자 호출합니다 그의 번호와 "시간 초과"시간 (현재 + 3 초)을 데이터베이스에 저장하고 사용자에게 속한 행의 "id"를 저장하는 세션을 엽니 다.

AJAX-Calls를 수행하는 Javascript-Script를 작성하여 사용자의 데이터베이스에서 "시간 초과"시간을 업데이트하십시오.

번호 얻는 방법 :

이 숫자가 제한 시간에없는 경우 (확인 "사용자"의 수를 계산하고 "수"의 최대 값이 있는지 확인하는 쿼리를 사용하여 저장 한

입니다 그 또는 이와 같음 ...) 그렇다면 새 사용자에게 더 큰 번호를 줄 수 있습니다. 그렇지 않으면 어떤 번호가 사용되지 않았는지 찾거나 1을 모두 다시 시작해야합니다 (질문 1의 대답에 따라 다릅니다.)

질문 2 : 왜 이것을 프로그래밍하고 싶습니까?

+0

숫자를 임의로 (예 : 자동 증가) 사용하는 것이 훨씬 쉽습니다. – SpazzMarticus

+0

나는 내가 초심자 (여전히 배우는)라고 말하는 걸 잊었습니다. 나는 이해하지 못합니다. : (미안 : X – user2856591

+0

숫자에 대한 용도는 무엇입니까? 번호? – SpazzMarticus

0

사용자, mysql, redis 또는 svr을 추적하는 데 사용하는 것이 nodej와 같은 요청간에 데이터를 보유 할 수 있는지 확실하지 않습니다.

무엇이든은, 내가 좋아하는 순서대로

  1. 번호 목록이 반환, 당신은이 일을 계속해야한다고 생각 [1, 5, 19 ...]
  2. 지금
  3. 객원의 총 수는, 경우, 반환 된 번호 목록 먼저

    1. 검사 : 일부 방문자가 왔을 때와 같은 20

    따라서, 단일 스레드에서 이러한 일을 비어 있지 않고 첫 번째 것을 튀어 나오고 돌아옵니다.

  4. 또는 단순히 총계 수를 늘리고 새 수를 반환하십시오.

방문자가 퇴장 할 경우 반환되는 목록의 오른쪽 위치에 번호를 삽입하고 방문자 수를 줄입니다.

+0

죄송합니다. 아무 것도 이해하지 못했습니다 ... :( – user2856591

0

HTTP 프로토콜이 stateless이기 때문에이를 달성 할 수있는 확실한 방법이 없습니다.

서버가 관련되어있는 한, 나는 페이지와 그 내용을 다운로드하는 동안에 만 실제로 연결되어 있습니다. 수백 가지의 연결이 아니라면 10을 포함 할 수 있습니다. 완료되면 연결이 끊어집니다.

페이지에서 10 시간 동안 응시하지만 연결되지 않았습니다.

PHP를 사용하면 세션을 사용하는 것을 고려해 볼 수 있습니다. 데이터베이스에 저장하면 세션 번호를 얻기 위해 세션 행을 계산할 수 있지만이 점에서도 신뢰할 수 없습니다. 세션은 세션을 생성하는 PHP 스크립트로 내 첫 번째 대화에서 생성됩니다. 세션은 존재하며 스크립트와의 후속 대화에 의해 새로 고쳐지지만 제한 시간이 만료 될 때까지 존재하게됩니다.

시간 초과가 발생하기 훨씬 전에 다른 곳으로 갔을 수도 있습니다. 그래서 이것 역시 당신의 요구 사항에 신뢰할 수 없습니다.

@SpazzMarticus에서 언급 한 자바 스크립트 '하트 비트'아이디어에는 가능성이 있지만 자바 스크립트를 사용 중지 할 수 있으므로 신뢰할 수 없습니다. 또한 서버로드가 증가하지는 않을 것이므로 그만큼 많은 부하가 발생할 것입니다. 1000 명의 사용자가 사이트의 페이지를보고 있는데, 초당 1000 회의 하트 비트 검사가 거의 효과가 없습니다. 서버가 연결을 세고 있기 때문에 페이지로드가 느려지기 때문에 몇 명의 다른 사용자가 느슨 할 것입니다.

방대한 양의 개발과 많은 시행 착오를 밟을 준비가되어 있지 않다면이 아이디어를 잊어 버릴 것입니다.

관련 문제