0

スクリプトの読み込みが完了したときにテキストを出力するにはどうすればよいですか。

私のスクリプトは、私がしたいURLのリストのメタデータを取得します:

開始をクリックすると、スクリプトが終了すると読み込み中というテキストが表示され、完了と表示されます

ユーザーは、エクスポート ボタンをクリックしてデータを取得できます。

4

1 に答える 1

1

PHPとWebの動作方法が原因で、これを実際に実行することはできません。基本的に、PHPの出力はクライアントに送信される前にバッファリングされるためprint "Finished"、スクリプトの最後に配置しても、クライアントはスクリプト全体が終了するまで応答を待機し、その後、出力全体が表示されます。一度に。

スクリプトのタイムアウトもあります。これは、スクリプトが終了するまでに構成された時間(デフォルトは30秒)より長くかかる場合、スクリプトが中止され、エラーメッセージがクライアントに送信されることを意味します。

最も洗練された解決策は、スクリプトの外部で実際の作業を行い(1分以上かかる場合は、cronジョブの使用を検討してください)、ファイルまたはデータベースを使用してスクリプトとcronジョブの間で通信することです。したがって、次に行うことは次のとおりです。

  1. スクリプトはデータを処理キューに追加し、「読み込み中です、お待ちください」と表示します
  2. cronジョブはデータを取得して処理を開始し、キュー内の「完了率」フィールドを更新します
  3. スクリプトは、javascriptを使用して約10秒ごとにリロードし、キューから更新されたステータスを読み取り、表示します
  4. ジョブが終了すると、cronジョブはキューで完了したジョブにマークを付け、さらに多くのジョブが使用可能になるまでスリープ状態になります。スクリプトは、ジョブが完了したことを確認し、「Finished」と表示して、リロードを停止します。

これが基本的な設定です。より快適なユーザーエクスペリエンスを得るには、定期的なリロードの代わりに、ある種のAjaxハートビートを使用することをお勧めします。

于 2012-04-13T12:31:08.010 に答える