この記事について
| 環境 | iphone(safari / chrome)+ PHP |
|---|---|
| 目的 | iphoneだけ特定ページが開けない原因を調べる |
| 結果 | PHPの応答が長すぎるのが原因。処理中に1バイトずつ echo して回避 |
つまずきポイント要約
- iphone は約60秒データが来ないとサーバー停止扱いになる
- TTFB を計測すると気づける
事象
iphone で一部のページが読み込めない。PCでは問題なく表示されるページでも iphone では safari も chrome もダメだった。
「ページを開けません。サーバーが応答を停止しています。」と出る。
PCでページの読み込み時間を計測した
TTFBが長すぎ
原因
原因は、サーバーサイド(PHP)の処理に時間がかかりすぎるため。どうも iphone では 60 秒以上データを送信しない PHP ファイルはサーバー停止と同じエラーがブラウザに出るみたい。
対処
対策として PHP の繰り返し処理中に1バイトの送信を繰り返す。するとサーバー停止扱いにはならない。
//半角スペースを出力してファイルが処理中であることを iphone に伝える
echo " ";
