• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Triple

Verificar conexão

18 mensagens neste tópico

Boas,

Existe alguma maneira de verificar se determinado IP está a fazer download do servidor?

Cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

$var = shel_exec(netstat);

e verificar se o IP lá está?

Cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
exec("netstat", $output);
if(strstr(implode("\n", $output), "127.0.0.1")) echo "O IP 127.0.0.1 está ligado ao servidor.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Então e isso será valido na seguinte situação, o internauta acede ao site para saber se está ou não a fazer download de um ficheiro no servidore, caso não esteja vai aparecer que está visto que está a visitar o site, ou estou errado?

Cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Estás certo. Para controlares só o download podes fazer um script que no início vai à bd, e mete que está a sacar, faz o readfile() e depois vai à bd e tira a marcação de estar a sacar.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Isso resulta? Assim:

<?php
require "connect.php";
$sql = "INSERT INTO tabela (IP) VALUES (".$IP.")";
$query = mysql_query($sql) or die ("Erro");
readfile($file);
$sql2 = "DELETE FROM tabela WHERE IP = ".$IP;
$query2 = mysql_query($sql2) or die ("Erro");

Isto funciona? Mesmo quando o download é abortado pelo user?

Cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Funciona bem quando o download é concluido, mas quando é interrompido fechando o browser por exemplo o valor continua lá =X Não estou a ver como vou solucionar o problema =X

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Funciona bem quando o download é concluido, mas quando é interrompido fechando o browser por exemplo o valor continua lá =X Não estou a ver como vou solucionar o problema =X

Isto é devido ao facto da execução do script ser terminada quando a ligação é abortada ou "timed out". Podes alterar este comportamento, com algo como:

<?php
ignore_user_abort(TRUE); //Não tenho a certeza se é true ou false aqui, a documentação é ambígua. Só testando...
require "connect.php";
$sql = "INSERT INTO tabela (IP) VALUES (".$IP.")";
$query = mysql_query($sql) or die ("Erro");
readfile($file);
$sql2 = "DELETE FROM tabela WHERE IP = ".$IP;
$query2 = mysql_query($sql2) or die ("Erro");
?>

Também dá para fazer umas coisas engraçadas com register_shutdown_function(), podes ler mais em Connection handling

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas,

Será possivel saber quantos KB's fez o user? Eu pensei, utilizando o fopen se contar quantas vezes precorreu o ciclo e multiplicasse pelo segundo parametro do fgets. Mas com o ignore_user_abort ele lê o file até ao fim independentemente de ter sido terminado ou n o download.

Cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pá, é usares um loop para ires mandando o file em diversos fwrite()s e fazeres um cálculo aproximado...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas,

Será possivel saber quantos KB's fez o user? Eu pensei, utilizando o fopen se contar quantas vezes precorreu o ciclo e multiplicasse pelo segundo parametro do fgets. Mas com o ignore_user_abort ele lê o file até ao fim independentemente de ter sido terminado ou n o download.

Cumps

connection_aborted()

Penso que podes usar essa função para verificar quando o download é interrompido, e então chamas uma função que te guarde quanto foi enviado até essa altura.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Para fazer um exec() não é necessário o host desponibilizar acesso à shell ???

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Para fazer um exec() não é necessário o host desponibilizar acesso à shell ???

É, mas ele tem servidor próprio, logo pode fazer isso. :P
0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Para fazer um exec() não é necessário o host desponibilizar acesso à shell ???

É, mas ele tem servidor próprio, logo pode fazer isso. :P

Ok, queria usar o  ? em vez de aquele boneco, não faço ideia porque apareceu.

Mas obrigado :D

esclarecido! :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas,

Será possivel saber quantos KB's fez o user? Eu pensei, utilizando o fopen se contar quantas vezes precorreu o ciclo e multiplicasse pelo segundo parametro do fgets. Mas com o ignore_user_abort ele lê o file até ao fim independentemente de ter sido terminado ou n o download.

Cumps

connection_aborted()

Penso que podes usar essa função para verificar quando o download é interrompido, e então chamas uma função que te guarde quanto foi enviado até essa altura.

Já tinha conseguido chegar lá =P tou a usar isso. Mas thanks =)
0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora