0

実行して完了するのに約5分かかるスクリプトがあります。すべてが1つのPHPページで行われます(AJAXなどは含まれますが含まれません)。スクリプトが完了すると、ファイルが電子メールで送信されます。

私が望んでいるのは、フロントエンドがフォームの送信を受け入れて、ウィンドウが開いたままの場合に情報をプッシュしながら、バックグラウンドでそれを実行することです。

したがって、たとえば、フローは次のようになります。

  1. フォームに記入して送信します。
  2. ページはフォームが送信されたことを確認します-ウィンドウを自由に閉じてください。
  3. ウィンドウが開いたままの場合は、「マイルストーン」の更新を行います
    1. クエリが終了しました
    2. 生成されたファイル
    3. 送信された電子メール

目標は、ユーザーが情報を待っている場合に情報を提供することですが、フォームの送信直後にウィンドウを閉じることは完全に許容され、電子メールは引き続き受信されます。AJAXを介してフォームを送信できることは知っていますが、成功のコールバックだけでなく、中間プロセスの完了を返すにはどうすればよいですか?

4

2 に答える 2

1

クライアント (ブラウザ) が更新のために定期的にサーバーをポーリングする必要があります。たとえば、次のようなものがあります。

function checkStatus() {
    $.ajax( {
        url: "/CheckStatus",  // your AJAX handler, on the server
        success: function(data) {
            $('#status').text( data );
            if( data != 'Email sent' )
                setTimeout( checkStatus(), 100 );
        }
    } );
}

次に、フォームが送信されたら、単に を呼び出しますcheckStatus

于 2012-05-14T19:59:14.740 に答える
0

サーバー側のロジックを、コマンド ラインから実行できるスクリプトに分離する必要があります。Linux を使用していると仮定すると、php exec() 関数を使用してサーバー上でバックグラウンド プロセスを開始し、php コマンド ライン プログラムを使用してスクリプトを実行します。

次に、ブラウザ コードでサーバーを定期的にポーリングして更新を求めます。

于 2012-05-15T09:29:23.597 に答える