Ir para o conteúdo
Triple

Verificar conexão

Mensagens Recomendadas

Triple    0
Triple

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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
djthyrax    11
djthyrax

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.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Triple    0
Triple

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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Triple    0
Triple

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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Bjecas    0
Bjecas

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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Triple    0
Triple

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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Bjecas    0
Bjecas

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.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
djthyrax    11
djthyrax

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

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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Gurzi    2
Gurzi

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! :)

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Triple    0
Triple

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 =)

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


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade