質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

1回答

2856閲覧

URLSessionのレスポンスが遅い

tarofess

総合スコア127

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2016/12/29 15:37

編集2016/12/30 05:30

URLSessionで通信すると、ちょっと時間が経ってから下記のコードの if error == nil の行が実行されます。

swift

1var request = URLRequest(url: url) 2 request.httpMethod = "GET" 3 request.timeoutInterval = 15 4 URLSession.shared.dataTask(with: request, completionHandler: {(data, response, error) in 5 if error == nil { 6

URLSessionのレスポンスが遅いのはどういう原因があるのでしょうか?
サーバーサイドは自分で実装しているので、その実装の仕方があまり良くないのかもしれません。
レスポンスが遅い時はどういった対処をすればいいでしょうか?swift上でなんとかなったりするでしょうか?
どなたかわかる方がいれば教えていただきたいです。よろしくお願いします。

///追記///
サーバ側の実装は以下のようになっています。

php

1try { 2 $pdo = new PDO($dsn, $user, $password); 3 $stmt = $pdo->query('SELECT * FROM Object'); 4 $stmt->execute(); 5 6 $result = array(); 7 8 foreach ($stmt as $row) { 9 array_push($result, $row); 10 } 11 $dbh = null; 12 13 echo json_encode($result);

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

適当なURLにアクセスした場合にもレスポンスが遅いのですか?
他のURLにアクセスした時にはレスポンスが早いのであれば、サーバーの実装に問題があるのでは無いでしょうか。

投稿2016/12/29 16:18

_Kentarou

総合スコア8490

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tarofess

2016/12/30 04:54

ご回答ありがとうございます。 適当なURLにアクセスした時を確認したのですが、レスポンスが早かったです。 なのでサーバの実装に問題がありそうなので確認してみます。 ありがとうございます。
tarofess

2016/12/30 04:59

と思ったのですが、ローカル環境で確認すると一瞬でデータを取得できました。 ということはサーバの実装には問題はなく、通信環境に問題があるのでしょうか?(Wi-Fiの速度が遅いとか...?) それともサーバ自体の速度に問題があり(?)とかでしょうか?
_Kentarou

2016/12/30 05:15

なんとも言えませんね、、、4Gで試してみるとまた違ったりしますかね?
tarofess

2016/12/30 05:20

今4Gで試すと、Wi-Fi環境よりデータが表示されるまでの時間が少し長かったです。
_Kentarou

2016/12/30 05:26 編集

通信にそんなに時間がかかるというのも考えにくいので、サーバー側で何かしら同期的に処理をしているとか無いですかね?
tarofess

2016/12/30 05:31

サーバ側の実装を追記しました。このようにデータを取得してそれを返しているだけといった処理になるので、同期的に何かしらの処理をしているとかはないですね。
_Kentarou

2016/12/30 06:02

後はそれぞれの箇所で時間を測ってボトルネックを見つけるしかないですかね、、、
tarofess

2016/12/30 06:08

了解しました。地道に時間を測ってみようと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問