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>";
?>
Pergunta
Rhaone
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):
Solução 2/3 [online.php] (criação do script principal): Solução 3/3 [online.txt] (outras informações):Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
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.