iphoneで一部のページが読み込めない → PHPが60秒以上無応答だとエラー扱い

この記事について

環境iphone(safari / chrome)+ PHP
目的iphoneだけ特定ページが開けない原因を調べる
結果PHPの応答が長すぎるのが原因。処理中に1バイトずつ echo して回避

つまずきポイント要約

  • iphone は約60秒データが来ないとサーバー停止扱いになる
  • TTFB を計測すると気づける

事象

iphone で一部のページが読み込めない。PCでは問題なく表示されるページでも iphone では safari も chrome もダメだった。

iphone_server_error

「ページを開けません。サーバーが応答を停止しています。」と出る。

PCでページの読み込み時間を計測した ttfb_time TTFBが長すぎ

原因

原因は、サーバーサイド(PHP)の処理に時間がかかりすぎるため。どうも iphone では 60 秒以上データを送信しない PHP ファイルはサーバー停止と同じエラーがブラウザに出るみたい。

対処

対策として PHP の繰り返し処理中に1バイトの送信を繰り返す。するとサーバー停止扱いにはならない。

//半角スペースを出力してファイルが処理中であることを iphone に伝える

echo " ";
タイトルとURLをコピーしました