BEM VINDO AO BLOG DO MARCOS CARRARO CRIADOR DO "CARRARO DASHBOARD". MUITO MAIS QUE UM SIMPLES BLOG.

quarta-feira, 25 de fevereiro de 2015

Resolver problema Download .zip com PHP Corrompendo + Limitando Velocidade de Download de Arquivo com PHP

Bom Dia,


Hoje finalizei um sistema e por incrível que parece por algum motivo estranho ele corrompia os downloads em zip, fazendo algumas buscas comentaram do mod deflat do apache, onde ele faz a compressão dos arquivos para melhorar a performance do site e ocupar menos banda (Para testes:  http://www.whatsmyip.org/http-compression-test/  ) .

Ok, então no meu .htaccess inseri a seguinte linha.

<IfModule mod_deflate.c>
    AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css application/x-javascript application/javascript application/ecmascript application/rss+xml
</IfModule>

Onde segundo ele deveria apenas compactar estes "mimes types", porém ele acabou compactando o .zip achei estranho, porém acabou resolvendo o problema, ainda fiquei "encucado" com o porque que ele compactou sendo que não declarei ele.

Download do zip resolvido é hora de ir para o php, onde vamos limitar a velocidade do download do usuário.

            // header para forçar download
            header('Content-Description', 'File Transfer');
            header('Pragma: public');
            header('Expires: 0');
            header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
            header('Cache-Control: private', false);
            header('Content-Type: application/octet-stream');
            header('Content-Disposition: attachment; filename="arquivo.zip"'); // Nome do arquivo
            header('Content-Transfer-Encoding: binary');
            header('Content-Length: ' . filesize('./upload/arquivo.zip'));
            header('Connection: close');
            // Metodo com limitacao de banda para 150k
            flush();
            $arqAberto = fopen("./upload/arquivo.zip", 'rb');
            while (!feof($arqAberto)) {
                echo fread($arqAberto, round(150 * 1024));
                flush();
                sleep(1);
            }
            fclose($arqAberto);


Forte abraço
Marcos Carraro.


Read More

segunda-feira, 23 de fevereiro de 2015

Testando "throughput" de rede

Boa Noite,

Pessoal, hoje vamos ver como fazer um teste de carga na rede / servidor.

Partindo do princípio que você esteja usando Centos/Fedora instale no servidor e no cliente o pacote "iperf"

No servidor vamos colocar ele em modo de "escuta"

# Ip Servidor: 192.168.1.1
# iperf -s

Cliente
# iperf -c 192.168.1.1

Agora vamos aumentar o tamanho do buffer para 10mb, para fazer isso utilize o parâmetro "-w 10M" de 10M pode ser até 10G

Exemplos

# Ip Servidor: 192.168.1.1
# iperf -s -w 10M

Cliente
# iperf -c 192.168.1.1 -w 10M

Agora faça a leitura deste arquivo para otimizar alguns parâmetros do kernel para melhorar a rede
https://www.frozentux.net/documents/ipsysctl-tutorial/

Tem um link no digitalocean que não consigo encontrar que também tratava dos parâmetros de kernel era mais direto ao ponto.

Mais informações
https://iperf.fr/

Obs:. O ideal é antes de botar para funcionar os novos parâmetros é de salvar o valor default do mesmo, pois as vezes existe a melhora como pode piorar.

Bons Testes
Read More

Posts que a turma mais esta lendo...

Posts que a turma mais esta lendo...

Marcos Carraro