0

サーバーに大量のファイルをダウンロードしたいと考えています。ダウンロードするさまざまなファイルのリストと、それらを配置する場所があります。これはすべて問題ではありません。wget を使用してファイルをダウンロードし、shell_exec でこれを実行します。

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

これはうまく機能し、サーバーはすべてのスレッドを開始し、ファイルはすぐにダウンロードされます。

問題は、ファイルがダウンロードされたときにユーザーに通知したいことです...そして、これは私の現在のやり方ではうまくいきません。では、これをどのように実装しますか?

どんな提案も役に立ちます!

4

2 に答える 2

2

すべてのファイルが次のようなもので配置されているかどうかを確認できると思います

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

今、あなたがしなければならないのは、この関数を毎秒(またはそれくらい)呼び出すサーバー上のスクリプトを呼び出すことです。これは、Meta Refresh(n秒後にブラウザにページをリロードさせる)またはAJAX(jQuery.getJSONなどを参照)を使用して実行できます。

スクリプトが呼び出され、ファイルがまだすべてダウンロードされていない場合は、「お待ちください」などの印刷を行い、後でもう一度更新してください。それ以外の場合は、成功メッセージを表示します。それで全部です。

于 2010-03-09T13:40:11.727 に答える
0

execを使用して外部wgetコマンドを実行することを検討できます。PHPスクリプトは、外部コマンドが完了するまでブロックされます。完了すると、完成したファイルの名前をエコーできます。

于 2010-03-09T13:40:03.960 に答える