0

私のphpホームページには、約10から60のフィールドを持つフォームがあります。「process.php」ページに送信すると、各フィールドが1つずつ処理され、結果が出力されます。しかし、これは結果を全体として出力します。私がやりたいことは、ajaxを使用してデータを送信し、出力を1つずつ収集して、ユーザーに1つずつ表示することです。

jquery get、post、および ajax メソッドを読みました。しかし、phpページから出力を1つずつエコーし、それぞれがajaxによって収集され、ユーザーに1つずつ表示されるようにするにはどうすればよいですか?

ajax呼び出しを1つずつ実行できることを知っています(1つのフィールドを送信して応答を取得し、それをユーザーに表示して次のフィールドを送信するなど)。しかし、私はそのようにしたくありません。ワンクリックですべてのフィールドを送信し、出力を 1 つずつ表示したいと考えています。

この process.php は API を使用します (curl を使用)。そのため、数秒の遅延がかかる場合があります。

出来ますか ?

詳細:

$fields = $_POST['flds'];
foreach($fields as $f)
{
  // do cURL operation - API

  // print output
}

したがって、出力は次のようになります。

output of field1
.....
output of field2
.....
output of field3
.....
etc..

つまり、最初に次のように表示されます。

output of field1

数秒後:

output of field1
output of field2

そしてこうなります。1つのフィールドを送信して出力を取得し、次に2番目のフィールドを送信してから出力するなどしたくありませんが、フィールド全体を送信して出力を1つずつ取得したいです。

出来ますか ?

類似: flush() PHP で出力が表示されませんか?

テストのために試したこと:

<?php
@apache_setenv('no-gzip', 1);
@ini_set('zlib.output_compression', 0);

$i = 10;
while($i>0)
{
    echo $i . '<br />';
    flush();
    sleep(1);
    $i--;
}
?>

しかし、機能していません。ページは数秒間ロードされているように見え、最終的に数字全体を出力します。

この質問をする理由は、この API は 1 回の実行に 4 ~ 11 秒以上かかるからです。したがって、50 フィールドを超えると、約 10 分かかります。スクリプトの最大実行時間を延長しても、ユーザーはその空白の画面でこれだけ待たなければなりません!

4

0 に答える 0