Baixando grande número de imagens no meu servidor e notificando o usuário quando o download é concluído

StackOverflow https://stackoverflow.com/questions/2409318

Pergunta

Quero baixar uma grande quantidade de arquivos para o meu servidor. Eu tenho uma lista de arquivos diferentes para baixar e locais onde colocá -los. Tudo isso não é um problema, eu uso o WGET para baixar o arquivo, execute isso com shell_exec

$command = 'wget -b -O' . $filenameandpathtoput . ' ' . $submission['url'];
shell_exec($command);

Isso funciona muito bem, o servidor inicia todos os threads e os arquivos são baixados em pouco tempo.

O problema é que quero notificar o usuário quando os arquivos são baixados ... e isso não funciona com minha maneira atual de fazer as coisas. Então, como você implementaria isso?

Quaisquer sugestões seriam úteis!

Foi útil?

Solução

Eu acho que você pode verificar se todos os arquivos estão em vigor com algo como

function checkFiles ()
{
    foreach ($_SESSION["targetpaths"] as $p)
    {
        if (!is_file($p)) return false;
    }
    return true;
}

Agora, tudo o que você precisa fazer é chamar um script no seu servidor que chama essa função a cada segundo (ou mais). Você pode conseguir isso com meta refresh (forçando o navegador a recarregar a página após n segundos) ou usando o Ajax (dê uma olhada no jQuery's .getJSON, por exemplo).

Se o script for chamado e os arquivos ainda não foram baixados, imprima algo como "por favor, espere" e atualize novamente mais tarde. Caso contrário, mostre a mensagem de sucesso. Isso é tudo.

Outras dicas

Você pode considerar usar exec Para executar o comando WGET externo. Seu script PHP bloqueará até que o comando externo seja concluído. Uma vez concluído, você pode ecoar o nome do arquivo preenchido.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top