1

主題のタイトルが明確でないことは知っていますが、そのタイトルの意図を説明します。

まず
、いくつかのフィールドを含むフォームと送信ボタンがあります。そのフォームは、次のupgrade2.phpような 別のページにリクエストを送信します。

<form action="upgrade2.php" method="post">
  <input ......>
  <input ......>
  <input type="submit" name="open_upgrade2" value="ok" />
</form>

現在、ページupgrade2.phpには次のようなタスク以上のものがあります。

<?php
  task 1
  task 2
  task 3
?>

私が欲しいのは、次のようなすべてのタスクの印刷メッセージの終了後です。

<?php
  task 1
  echo task 1 finished
  task 2
  echo task 2 finished
  task 3
  echo task 3 finished
?>

sleepob_flushおよび関数を使用flushして実行を停止し、メッセージを出力してから実行を継続しようとしましたが、残念ながら、スクリプトはすべてのタスクを同時に実行してから結果を通知する必要がありますが、これは私が望むものではありません。

すべてのタスクの終了後にメッセージを出力したい。

4

2 に答える 2

0

あなたはいくつかのことをしなければなりません:

1)ob_cachingをオフにします(またはすべてのタスク/出力の後にob_flushを追加します)

2)各タスク/出力の後にフラッシュを使用するか、バッファを非アクティブ化します

3)スクリプトが終了するまで、Webサーバーがキャッシュ/待機/バッファリングしないようにします。これは、modul / cgi/webserverに依存します。ここがあなたの問題だと思います。

最初にCLIでプログラムして、出力を確認してください。次に、Webサーバーを介して実行します。どのWebサーバーを使用していて、どのようにphpを使用/呼び出し/実行しますか?

于 2013-01-22T14:33:49.383 に答える
0

少し前に、私は似たようなことをしましたが、表示のために少し回避策を使用しました。

PHP のフラッシュ機能に依存するのではなく、AJAX のような呼び出しを使用して、memcache に保存されたステータスを取得しました。

ajax リクエスト用に 1 つのファイルを作成しました。このファイルは、現在ログインしているユーザーの memcache 値を返すだけで、タスクの配列とその終了状態 (true または false) です。その結果に応じて、javascript は HTML を変更します。

プロセス スクリプトの場合、タスクが終了するたびに memcache の値を編集するだけです。

大変な作業のように思えますが、1 時間以内に実装でき、出力される HTML をより細かく制御できます。

于 2013-01-22T14:50:43.340 に答える