Carregando ...
Desculpe, ocorreu um erro ao carregar o conteúdo.
Estamos atualizando nossos sistemas e algumas funções do Yahoo Grupos estarão indisponíveis por algumas horas. Emails enviados para seus grupos podem ser entregues com atraso durante esse período. Obrigado por sua paciência e compreensão.

27003Exclusão de "fantasmas" de Chat

Expandir mensagens
  • Fabio Zimmermann
    2 de jul de 2001
    Exibir fonte
    • 0 Anexo
      Ol� a todos.

      Seguinte: implementei um chat em PHP baseado em arquivos, que armazenam tanto
      as mensagens enviadas qto os usu�rios presentes na sala no momento. Para
      eliminar automaticamente usu�rios "fantasmas" - aqueles que param de usar o
      chat mas n�o clicam em "sair" - implementei a seguinte fun��o abaixo:


      function exclui_usuarios_offline($curso, $arquivo_usuarios, $tempo_maximo) {
      $tstamp_atual = time();
      $lista_usuarios = file($arquivo_usuarios);

      $arq = fopen($arquivo_usuarios, "w");
      foreach($lista_usuarios as $um_usuario) {
      list($datah, $um_us_login, $um_us_ip, $um_us_datah_ult_acao) =
      explode(TAG_U, $um_usuario);
      // timestamp de $um_us_datah_ult_acao
      list($data, $horario) = explode(" ", $um_us_datah_ult_acao);
      list($ano, $mes, $dia) = explode("-", $data);
      list($horas, $minutos, $segundos) = explode(":", $horario);
      $tstamp_usuario = mktime ($horas, $minutos, $segundos, $mes, $dia, $ano);

      if($tstamp_atual - $tstamp_usuario > $tempo_maximo) // O RETIRA
      insere_mensagem_arquivo("$um_us_login sai da sala", "System", $curso,
      0);
      else // O MANTEM NA LISTA
      fputs($arq, $um_usuario);
      }
      fclose($arq);
      }


      At� a�, tudo bem. A l�gica da coisa est� ok. Por�m, qdo tem na sala um n�mero
      muito grande de usu�rios, acima de 10/15 (as salas deveriam comportar at� 60),
      as leituras e escritas no arquivo de usu�rios tornam-se cr�ticas a um tal
      ponto em que o sistema elimina usu�rios realmente online, embora esses
      eliminados possam ainda interagir no chat - Isso que o tempo m�ximo de
      perman�ncia "ocioso" (sem rodar o loop de leitura de mensagens) � de 48s. sem
      contar que, se um s� usu�rio estiver no chat e sair em falso, esse mecanismo
      n�o ir� elimin�-lo, pois para isso precisa-se de pelo menos um usu�rio
      presente na sala (para rodar o script "anti-fantasmas"). E a elimina��o em
      falso acontece mesmo qdo eu desativo esse sistema de elimina��o de fantasmas.

      Algu�m faz id�ia de como os chats de grandes portais (Terra, UOL, etc.) tratam
      esse problema dos "fantasmas", e como eles evitam o problema que eu estou
      tendo com isso (elimina��o em falso)?

      []'s,



      Fabio P. Zimmermann

      fabio.p.z@...
      ICQ# 65524281

      "N�o importa o que fizeram de voc�.
      O que importa � o que voc� faz com aquilo que fizeram de voc�." - Sartre