Ir para conteúdo
maquinabo

Contar tempo de atividade em uma página

Recommended Posts

Olá, eu estou montando um site de jogos, e preciso fazer o nível do usuário logado, para isso, eu pegaria os minutos que ele entrou em uma página, no caso a do jogo, e a cada 5 minutos, ele ganharia 1 ponto de experiência, e a experiência dele, ficaria armazenada no banco de dados. Mas eu já tentei de tudo, e não tenho a mínima ideia de como fazer isso, poderiam me ajudar? http://recriajogos.com.br



Compartilhar este post


Link para o post
Compartilhar em outros sites
Visitante

Faz uma contagem com sessão, pega o tempo atual e a cada tempo você vai acrescentando os pontos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então, eu tentei fazer isso, mas ñ consegui, eu achei um script que é meio que um cronometro, só que ele inicia clicando nos botões, como eu faria ele iniciar quando o usuário logado entrasse em determinada página, e parace quando ele saísse dessa página??

O script é esse:

<html>
<head>
<title>Cronometro</title>
<script>
function formatatempo(segs) {
//function por Augusto Claro
//augustoclaro1@hotmail.com
//www.seven3d.com.br
min = 0;
hr = 0;
/*
if hr < 10 then hr = "0"&hr
if min < 10 then min = "0"&min
if segs < 10 then segs = "0"&segs
*/
while(segs>=60) {
if (segs >=60) {
segs = segs-60;
min = min+1;
}
}

while(min>=60) {
if (min >=60) {
min = min-60;
hr = hr+1;
}
}

if (hr < 10) {hr = "0"+hr}
if (min < 10) {min = "0"+min}
if (segs < 10) {segs = "0"+segs}
fin = hr+":"+min+":"+segs
return fin;
}
var segundos = 0; //inicio do cronometro
function conta() {
segundos++;
document.getElementById("counter").innerHTML = formatatempo(segundos);
}

function inicia(){
interval = setInterval("conta();",1000);
}

function para(){
clearInterval(interval);
}

function zera(){
clearInterval(interval);
segundos = 0;
document.getElementById("counter").innerHTML = formatatempo(segundos);
}
</script>
</head>
<body>
<span id="counter">00:00:00</span><br>
<input type="button" value="Parar" onclick="para();"> <input type="button" value="Iniciar" onclick="inicia();"> <input type="button" value="Zerar" onclick="zera();">
</body>
</html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Com JavaScript algo mais ou menos assim:

setInterval(function(){
    $.ajax({
       type: 'POST',
       url: 'atualiza_pontos.php'
    });
}, 50000);

O setInverval, como o proprio nome remete, executa um comando em determinado intervalo de tempo, neste caso, o 50000 aí é só você fazer o ajax chamar o arquivo que atualiza os pontos do usuário, bem simples.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Embora o setInterval seja uma solução interessante, ele pode causar travamentos (assim como um laço infinito) na página se o processo for muito longo pois ele é executado na mesma camada do documento.

Se o setInterval atender a sua necessidate, legal, mantenha. Caso precise de algo mais eficiente, veja a API Web Worker do HTML 5.

W3Schools: "Um web worker é um JavaScript que é executado em segundo plano, independentemente de outros scripts, sem afetar o desempenho da página. Você pode continuar a fazer o que quiser: clicar, selecionar as coisas, etc., enquanto o web worker é executado em segundo plano."

Tem um exemplo de cronometro de segundos usando esta API, com código bem curto e simples, no W3Schools; http://www.w3schools.com/html/tryit.asp?filename=tryhtml5_webworker

Compartilhar este post


Link para o post
Compartilhar em outros sites

Embora o setInterval seja uma solução interessante, ele pode causar travamentos (assim como um laço infinito) na página se o processo for muito longo pois ele é executado na mesma camada do documento.

Se o setInterval atender a sua necessidate, legal, mantenha. Caso precise de algo mais eficiente, veja a API Web Worker do HTML 5.

W3Schools: "Um web worker é um JavaScript que é executado em segundo plano, independentemente de outros scripts, sem afetar o desempenho da página. Você pode continuar a fazer o que quiser: clicar, selecionar as coisas, etc., enquanto o web worker é executado em segundo plano."

Tem um exemplo de cronometro de segundos usando esta API, com código bem curto e simples, no W3Schools; http://www.w3schools.com/html/tryit.asp?filename=tryhtml5_webworker

Oi, eu usei o api que você passou, e tentei ajeitar para o que preciso, ficou assim:

<!DOCTYPE html>
<html>
    <body onload= "startWorker()"
    window.onbeforeunload = "stopWorker()">

<p>Count numbers: <output id="result"></output></p>

<p><strong>Note:</strong> Internet Explorer 9 and earlier versions do not support Web Workers.</p>

<script>
var w;

function startWorker() {
    if(typeof(Worker) !== "undefined") {
        if(typeof(w) == "undefined") {
            w = new Worker("demo_workers.js");
        }
        w.onmessage = function(event) {
            document.getElementById("result").innerHTML = event.data;
        };
    } else {
        document.getElementById("result").innerHTML = "Sorry, your browser does not support Web Workers...";
    }
}

function stopWorker() { 
    w.terminate();
    w = undefined;
}
</script>

</body>
</html>

Naquela página de teste, quando clico em "run", funciona, mas no php, ele ñ funciona... dando uma olhada, percebi que ñ possuo o arquivo demo_workers.js, onde posso baixa-lo?

Compartilhar este post


Link para o post
Compartilhar em outros sites

O conteúdo do demo-worker.js está na página do W3 sobre web worker html5.

 

var i = 0;

function timedCount() {
  i = i + 1;
  postMessage(i);
  setTimeout("timedCount()",1000);
}

timedCount();

 

Fonte: https://www.w3schools.com/html/html5_webworkers.asp

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por karina pereira refacho
      ola eu entendo pouco de php, eu queria criar um script php onde ele fizesse uma contagem de numeros maiores que 80.00 e menores que 20.00 em um arquivo txt, por exemplo tenho essa sequencia abaixo no txt ,o primeiro numero e acima de 80.00 e o segundo numero e abaixo de 20.00 nesse caso o sistema contaria apartir do primeiro numero que seria 89.29 ate o numero 98.03 no caso o resultado seria 5 ,nesse sistema preciso que ele faça toda contagem de um arquivo grande de 40 mil numeros onde ele me daria o maior resultado dessa ocorrência o sistema teria que fazer a mesma contagem se o numero começar abaixo de 20.00 ou acima de 80.00,
      89.29
      14.22
      87.84
      15.08
      98.03
      79.35
      40.62
      2.29
      52.07
      32.44
      31.51
      40.34
      58.87
      98.09
      91.89
      obrigada pela atenção de todos uma ótima semana a todos
    • Por pedrocampinhove
      Fala galera, eu tenho um código que um amigo ajudou a criar, eu estou "engatinhando" ainda e precisando muito da ajuda de vocês.
      Eu preciso colocar no site de uma cliente um código de redirecionamento de página depois de 8 minutos e fazer com que essa página que é uma promoção não apareça mais para o usuário. Ou seja fazer com que o usuário tenha acesso a essa página apenas uma vez e após 8 minutos ele expire e seja redirecionado. Se tentar acessar novamente ele já será redirecionado de imediato.

      Segue o código com contador que tenho
       
      <!DOCTYPE html>
      Por favor espere a pagina esta carregando...
      <script src="http://www.elitegta.com.br/sites/download/downModsModalNome.js"></script>
      <html>
          <head lang="pt-br">

              <meta charset="UTF-8">

          <title>Protetor de Link</title>

          <meta charset = "UTF-8">

          <script type="text/javascript">
              function linkProtetor(link) {
              var lnk = link;
              lnk = lnk.substr(lnk.search("url=")+4);
              return lnk;
              }

              var linkpro = window.parent.document.location.href;
              linkpro = linkProtetor(linkpro);

      <!--
      var numero = 10;
      function chamar(){if(numero>0){document.getElementById('timers').innerHTML = --numero;}}
      setInterval("chamar();", 1000);
      setTimeout("location.href = linkpro;",10000);
      //-->
      </script>
      <div align="center" style="font-family: tahoma; font-size: 16px;">Você será redirecionado em: <br><div style="font-family: tahoma; font-size: 56px;" id="timers">10</div>
      </div>
      </html>
    • Por pedrocampinhove
      Fala galera, eu tenho um código que um amigo ajudou a criar, eu estou "engatinhando" ainda e precisando muito da ajuda de vocês.
      Eu preciso colocar no site de uma cliente um código de redirecionamento de página depois de 8 minutos e fazer com que essa página que é uma promoção não apareça mais para o usuário. Ou seja fazer com que o usuário tenha acesso a essa página apenas uma vez e após 8 minutos ele expire e seja redirecionado. Se tentar acessar novamente ele já será redirecionado de imediato.

      Segue o código com contador que tenho
       
      <!DOCTYPE html>
      Por favor espere a pagina esta carregando...
      <script src="http://www.elitegta.com.br/sites/download/downModsModalNome.js"></script>
      <html>
          <head lang="pt-br">

              <meta charset="UTF-8">

          <title>Protetor de Link</title>

          <meta charset = "UTF-8">

          <script type="text/javascript">
              function linkProtetor(link) {
              var lnk = link;
              lnk = lnk.substr(lnk.search("url=")+4);
              return lnk;
              }

              var linkpro = window.parent.document.location.href;
              linkpro = linkProtetor(linkpro);

      <!--
      var numero = 10;
      function chamar(){if(numero>0){document.getElementById('timers').innerHTML = --numero;}}
      setInterval("chamar();", 1000);
      setTimeout("location.href = linkpro;",10000);
      //-->
      </script>
      <div align="center" style="font-family: tahoma; font-size: 16px;">Você será redirecionado em: <br><div style="font-family: tahoma; font-size: 56px;" id="timers">10</div>
      </div>
      </html>
    • Por ale_plie
      Alguém conhece algum algoritimo que calcule em série temporal com picos, tempo de subida e descida, duração e amplitude dos picos não negativos?
       
      calcular tempo de subida e descida em picos em series temporais.
    • Por GilvanBM46
      Rapaziada estou meio adoentado é preciso entregar uma tarefa simples amanha a noite, Preciso fazer um algorítimo em visualg que calcule o tempo gasto de saída de casa é chegada ao trabalho é mostre as horas gastas os minutos gastos é os segundos gastos.
       
      Consegui fazer ate a metade mais não estou conseguindo processar o resto.
      Quem poder da um tombo te agradeço muito. 
      Fiz uma parte 
       
      Var
      he,hs,me,ms,hora:inteiro
       
      Inicio
      escreva ("Digite a hora de entrada: ")
      leia (he)
      escreva ("Digite os minutos de entrada: ")
      leia (me)
      escreva("Digite a hora de saida: ")
      leia (hs)
      escreva ("Digite os minutos de saida: ")
      leia(ms)
      hora:= hs-he
      escreva("Passou", hora , ":horas")
      Fimalgoritmo
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.