1

アプリはサーバーによって生成されたファイル(plist)をダウンロードしています。サーバーがファイルを生成するのに非常に時間がかかるので、進行状況を表示できるようにしたいと思います(おそらく、UIProgressViewを表示しますが、それは重要ではありません)。

ダウンロードしているファイルはリクエストの開始時にまだ作成されていないため、はわかりませんexpectedContentLength。ただし、[PHP]スクリプト自体から進行状況の更新を提供する手段があります。私はob_flush()これを行うためにファイルの各行に使用しています。これはブラウザで問題なく機能します。

しかし、アプリからリクエストを送信するとconnection:didReceiveData:、スクリプトの実行が終了した後にのみ呼び出しが発生するため、あまり役に立ちません。

だから私の質問はこれに要約されます:
私のアプリからそのようなphpスクリプトの進行状況をどのように利用できますか?

サーバーに2つのリクエストを送信してもかまいません。最初のリクエストはファイルを生成し、その間に更新を提供し、もう1つは実際のファイルをダウンロードします。

リクエストが完了するまでNSUrlConnectionデリゲートメソッドは呼び出されないので、これらのメソッドをトリガーするためにスクリプトは何をする必要がありますか?

4

1 に答える 1

1

問題はサーバーで発生している可能性があります。サーバーが処理中にデータを送信していて、その処理にかなりの時間がかかる場合は、おそらく複数の通知を受け取る必要がありconnection:didReceiveData:ます。

PHPマニュアルに関連する可能性のあるいくつかの議論があります。 http://php.net/manual/en/function.ob-flush.php

パケットアナライザーを使用して、サーバーが実際にデータを期待どおりに増分送信していることを確認します。

于 2010-01-22T07:45:52.903 に答える