3

適切な時間(1秒から3分の間)実行されるPHPスクリプトに対してjQueryAjax呼び出しを行います。完了率をデータベースに常に記録します。同時に別のAjaxリクエストを継続的に実行して、MySQLデータベースからの完了率をユーザーに報告するにはどうすればよいですか?

編集 別のPHPスクリプトを使用してデータベースにクエリを実行する方法を理解しているので、私の質問はJavaScriptとAjaxの呼び出しを設定する方法です。

4

2 に答える 2

6

プロセスを開始するためのAJAX呼び出しの後、ループ内で別のAJAX呼び出しを行うことができます。この呼び出しは、100%に達するまで、現在の完了率を要求、返し、提示します。基本的に、プロセスを開始するための1つのAJAX呼び出しと、ステータスをチェックする一連の呼び出し。

更新:これがあなたが望むものを達成するためのいくつかの簡単なJavaScriptです:

<script>
function startProcess() {
    //start your long-running process
    $.ajax(
            {
                type: 'GET',
                url: "/longRunningProcess",
                async: true,
                success:
                    function (data) {
                        //do something - your long process is finished
                    }
            });
}
function getStatus() {
    //check your progress
    $.ajax(
            {
                type: 'GET',
                url: "/checkProgress",
                async: true,
                success:
                    function (data) {
                        //assume the data returned in the percentage complete
                        var percentage = parseInt(data);

                        //write your status somewhere, like a jQuery progress bar?

                        if (percentage < 100) {
                            //if not complete, check again
                            getStatus();
                        }
                    }
            });
}

于 2013-01-22T22:02:37.263 に答える
0

データベースからの進行状況をポーリングする呼び出しには、おそらく別のURLが必要になります。つまり、進行状況を報告する別のPHPスクリプトです。Ajax呼び出しは、おそらくタイムアウトまたはjQueryが定期的に(サーバー呼び出しが完了を報告するまで)それ自体をスケジュールしなければならない特別なものを使用します。

サーバー側の処理が停止する(したがって完了しない)例外的なケースを処理することを忘れないでください。

于 2013-01-22T21:39:42.693 に答える