2012-01-18 2 views
1

PHP가 실행되는 웹 사이트가 mySQL 데이터베이스에 있습니다. 내가 사이트에 방문한 모든 방문자에 대해 사용자 세션을 지난 5 분 동안 별도의 테이블에 기록합니다.페이지 새로 고침없이 변경되는 동적 카운터

페이지를 새로 고침하지 않고 활성 세션의 양을 변경하는 페이지에 동적 카운터를 만들 수 있습니다. 예를 들어 웹 사이트에 15 명의 다른 사용자가 들어오는 경우 페이지를 다시로드하지 않아도 카운터가 자동으로 변경됩니다. .

답변

1

매우 기본적인 경우 AJAX를 통해 서버 스크립트를 폴링 할 수 있습니다.

// Poll the server each 60 seconds 
window.setInterval(function() { 
    $.getJSON('/online_users.php', function(data) { 
     // Here the data JSON returned by a PHP script 
     // e.g. data.count - count of sessions online 
     // data.users - could be array of user objects, etc 
     $('#counter').text(data.count); // Update some DOM element with new number 
    }); 
}, 60000); 

그리고 서버 측 online_users.php :

<?php 

// connect to DB, perform all necessary operations 
// output needed info in JSON format 

$users = array(
    array('username' => 'Tomas', 'id' => 234), 
    array('username' => 'Jassy', 'id' => 42) 
); 
$count = count($users); 

header('Content-type: application/json'); 
die(json_encode(array(
    'count' => $count, 
    'users' => $users 
))); 
+0

정말 고마워요 그 PHP 스크립트는 온라인 사용자 수, 그 사용자 이름 등 같은 몇 가지 원하는 정보와 예를 자바 스크립트 그래서 일부 응답 것입니다. 나는 당신이 제공 한 코드로 이것을 시도했지만 아무 것도 출력되지 않고있다. 좀 더 가까이에서 살펴 봐야합니다. 단지 한 가지 질문 만 할 수 있습니다. 내가 보여줄 수 있기 때문에 '에코'할 필요가 없습니다. 감사합니다 –

+0

내가 제공 한 코드는 잘 작동합니다. 그냥 가까이 다가 봐. 물론 네가 응답으로 뭔가를 출력하는 PHP 스크립트가 필요합니다. 'echo','die','print' 등등. 번호가 필요할 경우 간단히'echo 25;'또는'die (25)'로 변경할 수 있습니다. – dfsq

+0

또한 간격을 1 분 미만으로 변경할 수도 있습니다. 아마도 1 분이 먼저 지나야하기 때문에 출력이 없었던 것일 수 있습니다. – dfsq

관련 문제