6

PHP と cURL 拡張機能を使用して、ある種の Web ベースのダウンロード マネージャーを構築しようとしていますが、1 つの問題に悩まされています。バックグラウンドで処理されます。

現在、システムコール(exec、system ...など)を使用できません。使用しているホストのほとんどがこれらの機能を無効にしており、もう1つの問題はPHPスクリプトの最大実行時間ですが、これは変更できると思います.htaccessで、またはini_setを使用していますか?

connect_timeout を 1 に設定するとうまくいくとどこかで読んだことがありますが、それは接続を終了しませんか?

解決策の 1 つは cronjobs を使用することです。ユーザーがダウンロードしたいファイルを送信した後、cronjob がデータベースをチェックし、キューにファイルがあればダウンロードを開始しますが、可能。

主な質問に戻りますが、php スクリプトに特定の関数をバックグラウンドで実行し、その関数の結果に関係なくユーザーに応答を配信するように指示する方法はありますか?

ありがとう

4

4 に答える 4

5

すでにオプションを調査している他の投稿があったと思います。あなたの制約を考えると、他に2つのアプローチがあります。

于 2013-06-20T11:49:27.040 に答える
4
  1. 以下のようにphpから単純なcurlリクエストを作成するか、javascriptを使用してajax呼び出しを行います

    $curl = curl_init('http://mutant-tech.com/execjob.php');
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    $result = curl_exec($curl);
    echo $result; // should get - Closing Curl Request
    
  2. 開始時にヘッダーを使用して http 接続を閉じ、後で実行する php コードを記述します

    // File - execjob.php START
    ob_end_clean();
    header("Connection: close");
    ignore_user_abort();
    ob_start();
    echo ('Closing Curl Request');
    $size = ob_get_length();
    header("Content-Length: $size");
    ob_end_flush();
    flush();
    // BELOW YOUR BACKGROUND JOB/CODE
    

より多くの実行時間/メモリが必要な場合は、それに応じて関数を使用してください

于 2015-04-27T07:52:02.587 に答える