1

私はASIHTTPRequestを使用してキューに100個以上の保留中の要求を送信していますが、1つのIPが1分に5個以上の要求を送信できないという制限があります。 ASIHTTPRequestASINetworkQueueを使用するにはどうすればよいですか?思考?1分以内に5リクエスト未満を確実に送信する方法。

ありがとうございます。

かい。

答えて

0

私はASINetowrkQueueのNSOperationQueueいずれかを使用すると、2つのオプションがありますので、直接これをやらせるとは思わない:

  1. サブクラスNSOperationQueue/ASINetworkQueueをし、1分あたりの要求を制限するためのサポートを追加し、帯域幅調整を見て彼らはすでにしています。
  2. キューに1分間に5つの操作しか追加しないでください。100以上のASIHTTPRequestのリストを作成し、5つをASINetworkQueueに追加し、デリゲートの使用が完了したら追跡します。

解決策2)は、ASIコードを掘り出す必要がないために簡単ですが、1)間違いなくクリーナーであり、私が確かに見つけた他の人とコードを共有することができますそれは便利です。

1

あなたのリクエストを作成してAVMutableArrayに格納し、あなたのリクエストがある場合は15秒(15 * 5 = 60)ごとにチェックするタイマーを持つよりも簡単です。あなたが置くサーバーに送信するのではなく、あなたの要求を作成するときよりも

@@synthesize queueTimer = _queueTimer; 
@@synthesize requestsQueue = _requestsQueue; 

- (void)viewDidLoad: 
{ 
    self.requestsQueue = [NSMutableArray array]; 
    self.queueTimer = [NSTimer timerWithTimeInterval:15 target:self selector:@selector(sendRequest) userInfo:nil repeats:YES]; 
} 

:あなたの時間のファイルの例では、あなたがよりこれを書くべきあなたメートルファイルで

@property (nonatomic, retain) NSTimer *queueTimer; 
@property (nonatomic, retain) NSMutableArray *requestsQueue; 

- (void)sendRequest; 

のようなものを持つことができます

:ここ

[self.requestsQueue addObject:request]; 

そして、この配列内のそれらはsendRequest方法であり、

はまた、そのような

[queueTimer invalidate]; 

は、この情報がお役に立てば幸いとして、タイマーを無効にするために、あなたのdeallocメソッドでは忘れないでください。何かが間違っていたら教えてください。

関連する問題