0

私はJqueryとphpを使用しています

サーバーでのスクリプト処理を終了せずに、php に ajax 呼び出しへの応答を送信して接続を閉じてもらいたいです。

私が望んでいないのは、ブラウザがサーバー側スクリプトの終了を待つことです。

このスクリプトは、サーバー上にファイルを生成するために使用されますが、これには多くの時間がかかります。ajax 呼び出しはそれを開始するだけであり、スクリプトの結果を知る必要も、スクリプトが終了するまで待つ必要もありません。ブラウザがそれを忘れて、完了したと見なすことができるという呼び出しを終了したいと思います。

1) ajax 呼び出し 2) 呼び出し (セキュリティと送信されたデータ) を確認した後、「わかりました」などの応答を返します。3) スクリプトをサーバー側で続行します。

これを行う方法はありますか?

4

3 に答える 3

0

これを直接行う方法はありません。PHP ではなく、Apache、または使用している HTTP サーバー (nginx、lightpd など) へのアクティブな接続があります。

このようなことを達成する最善の方法は、「バックグラウンド タスク」をセットアップすることです。通常、タスクをある種のデータベースに保存し、必要な作業を確認して実行するバックグラウンド ワーカー (数分ごとにスクリプトを実行する cron ジョブなど) を用意します。

于 2013-09-13T15:51:10.233 に答える
0

私が考えることができる唯一のことは、ジョブを PHP の小さな部分に分割することです。

console.log("Started");
$.ajax({
    url: "/path/to/script/file.php",
    dataType: "json",
    data: {"start":true}
    success: function(data) {
        if(data.status=="OK"){
            console.log("Continuing");
            $.ajax({
                url: "url: "/path/to/script/file.php",
                dataType: "json",
                data: {"continue":true}
                success: function(data) {
                    if(data.status=="OK"){
                        console.log("Completed");
                    }else{
                        console.log("Didn't Complete");
                    }
                }
            });
        }else{
            console.log("Didn't Continue");
        }
    }
});
于 2013-09-13T15:52:29.627 に答える