Ir para conteúdo
Fórum Script Brasil
  • 0

PHP+Apache: preciso de um sinal de atividade ...


Rhaone

Pergunta

PHP+Apache: preciso de um sinal de atividade ... quando estão fazendo download.

Já achei a solução deste problema em outro fórum e venho postar aqui para o possível aproveitamento futuro dos colegas ...

Problema original 1/2:

Olá pessoal!

Não adianta eu pesquisar no Google e nem aqui no fórum, pois a palavrinha "download" me retorna

sites de downloads do aplicativo Apache e o que eu preciso é de um sinal de atividade de download

que os visitantes estão fazendo dos meus arquivos.

Quero dizer que preciso de algo como:

1) um ícone que mude de cor ou que apareça na barra de tarefas mostrando que naquele instante está ocorrendo um download;

2) uma janela que mostre os arquivos que estão sendo feito downloads dos mesmos ou, no mínimo, um arquivo de log.

3) quero registrar quantas vezes um determinado arquivo foi baixado, hora de início e quanto tempo levou.

Aqui é o ponto onde inseri onclick="informa_downloads();" no index.php para esta finalidade:

------------------------------------------------------------------------------------------------

...

<a href="index.php?folder='.base64_encode($folders['link'][$key]).' onclick=informa_downloads();">'.$folders['name][$key].'</a>

...

------------------------------------------------------------------------------------------------

Problema original 2/2:

Minha configuração:

Pentium IV 2,66 MHz, 3GB RAM, 4x250GB de HD + 1x120GB HD

Windows XP SP2

Mozilla Firefox v3.0.1

ADSL Router D-Link DSL 500B

Apache for Windows 2.2.8

PHP-5.2-win32

Mysql-5.0.22-win32

phpMyAdmin-2.8.1

Alguém tem uma noção disto?

Grato.

Solução 1/3 [online.sql] (criação das tabelas):

CREATE TABLE `online_max` (
  `max_data` date     NOT NULL,
  `max_hora` time     NOT NULL,
  `max_qua`  int (11) NOT NULL
);

CREATE TABLE `online_usu` (
  `max_usu_timestamp` int      (15) NOT NULL,
  `max_usu_ip`        varchar  (40) NOT NULL,
  `max_usu_file`      varchar (100) NOT NULL
  )
Solução 2/3 [online.php] (criação do script principal):
<?php
  //lembre-se que deve existir uma conexão com o banco de dados.

  // aqui pega a url real onde o usuario esta navegando
  $path = empty($HTTP_SERVER_VARS['PATH_INFO'])?$HTTP_SERVER_VARS['PHP_SELF']:$HTTP_SERVER_VARS['PATH_INFO'];
  $host = empty($HTTP_SERVER_VARS['SERVER_NAME'])?$HTTP_ENV_VARS['SERVER_NAME']:$HTTP_SERVER_VARS['SERVER_NAME'];
  $string=$_SERVER['QUERY_STRING']?'?'.$_SERVER['QUERY_STRING']:'';
  $hostpath="$host$path$string";      // este $hostpath é a url real neste momento

  $timeoutseconds = 600; // Tempo para renovar a lista de usuários on-line
  $usu_ip = $_SERVER['REMOTE_ADDR'];     // caputura o usu_ip do usuario
  $usu_timestamp=time();          //pega o usu_timestampo atual (não mexer)
  $timeout=$usu_timestamp-$timeoutseconds;     //para saber quais os registros velhos para serem apagados

  // a seguir a sequencia sql para apagar os registros antigos da tabela
  mysql_query("DELETE FROM online_usu WHERE usu_timestamp<$timeout");

  // a seguir insere a visita atual na tabela, inserindo o usu_ip e a pagina onde esta visitantdo
  mysql_query("INSERT INTO online_usu VALUES ('$usu_timestamp','$usu_ip','$hostpath')");

  //a seguir ele conta quantos usu_ip distintos existem registrados na tabela online_usu
  $result = mysql_query("SELECT DISTINCT usu_ip FROM online_usu");
  $user = mysql_num_rows($result);
  // $user é o valor de visitantes on-line baseado nos acessos dos ultimos 600 segundos

  //agora para saber o recorde de acessos simultaneos

  // primeiro deletamos os registros de usuarios menores/igual ao atual($user) da tabela online_max
  mysql_query("DELETE FROM online_max WHERE max_qua<=$user");

  // agora insere o max_data, a hora e a quantidade de usuarios on line neste momento
  mysql_query("INSERT INTO online_max VALUES (now(),now(),'$user')");

  // aqui fazemos uma busca pelo maior valor registrado na tabela, que vai ser o record de usuarios online
  $max = mysql_query("SELECT * FROM online_max ORDER BY max_qua DESC LIMIT 1");
  while ($reg = mysql_fetch_array($max)){
      /* executa sql */
     
      // aqui convertemos a data para formato dd/mm/aa
  $max_data = substr($reg['max_data'],8,2) . "/" .
  substr($reg['max_data'],5,2) . "/" .
  substr($reg['max_data'],2,2);

  //convertemos o max_hora para  hh/mm
  $max_hora = substr($reg['max_hora'],0,2) . ":" .
  substr($reg['max_hora'],3,2) . "h";
  $max_qua = $reg['max_qua'];
  }
  // $max_qua é o recorde de acessos simultaneos ao site
?>
Solução 3/3 [online.txt] (outras informações):
// informações para conexão à base de dados 
    <?php
      $host = "localhost";  // host do mysql
      $user = "root";       // usuário
      $pass = "";     // senha do usuário
      $base = "seubanco"; // nome da base de dados
      // conecta o mysql
      $conn = mysql_connect($host, $user, $pass) or die ("<br><br><center>Problemas ao conectar no servidor: " . mysql_error() . "</center>");
      // seleciona a base de dados
      $banc = mysql_select_db($base) or die ("<br><br><center>Problemas ao selecionar a base de dados do sistemas: " . mysql_error() . "</center>");
    ?>

 // Insira o include em todas paginas, assim todos os acessos serão registrados:
    <?php
      include "online.php";
    ?>

 // Visualização dos usuários on line no momento:
    <?php
      echo "<a title='Usuário'><u>$user</u></a>";
    ?>

 // Visualização do Recorde de usuários on-line:
    <?php
      echo "<a title='Data $max_data as $max_hora'><u>$max_qua</u></a>";
    ?>

Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...