PHPのプログラムからMySQLのDBに少々重いクエリ(概ね実行時間が5分を超えるもの)を投げると、PHPの処理がエラーにもならず固まってしまう(SQLの戻りを待ち続けているような。。)現象が発生して困っています。
尚、同じクエリを実行しても、5分かからない場合は問題なく処理されています。

6分を超えるクエリでは必ず現象が発生し、おそらく5分を超えた場合には発生していると思いますが、正確な現象発生のしきい値がどこにあるのか、あるいは発生したりしなかったりするポイントがあるのかははっきりはしていません。。
クエリはSELECT文で、new mysqliで接続後、prepare、bind_param、executeと言う流れで実行しています。

諸々調査や設定の変更などを行いましたが、改善の兆しはなく、また原因も判然とせず途方に暮れております。
当方PHPはあまり経験がないので、詳しい方・経験のある方のアドバイスをお願いいたします。
(そもそも5分もかかるようなクエリ投げるな、という話ではありますが、、、)

 
詳細は以下の通りです。

【環境】
・以下いずれの環境でも発生しています。
a)DB:CentOS6.5-x86-64bit + MySQL5.6.21
AP:Windows7-64bit+XAMPP(PHP5.5.15)

b)DB:CentOS6.5-x86-64bit + MySQL5.6.21
AP:DBと同一サーバ + Apache2.2.29 + PHP5.5.17

c)DB:CentOS6.5-x86-64bit + MySQL5.6.22
AP:DBと同一サーバ + Apache2.2.29 + PHP5.5.19
 
 
 
【試したり調査した内容と当方の所感】
<特にコメントが無い場合は、a)の環境で確認。>

①処理が止まるのは、mysqliでexecuteしている箇所であることを、デバッグのステップ実行にて確認

②接続方法を、mysqli_realconnectにして、MYSQLI_OPT_CONNECT_TIMEOUTを設定するも変化なし。
 (コネクトするまでのタイムアウト設定なので関係ないだろうとは思ったが念の為。)
 b)の環境でも同様

③php.iniのmax_execution_timeを延ばす。(50⇒3000)変化なし。
 (問題があれば、エラーになるはずなので関係ないだろうとは思ったが念の為。)
 b)の環境はもともと36000に設定してあった。

④httpd-default.conf の timeout の値を延ばす(300⇒3000)が変化なし
 (問題があれば、エラーになりそうなので関係ないだろうとは思ったが念の為。)
 b)の環境はもともと36000に設定してあった。

⑤executeした後、DBサーバのコンソール(mysql)にて「show processlist;」
 該当するクエリに該当するプロセスが「Command:Execute、State:Sending data」で存在
 b)・c)の環境でも同様確認。

⑥レスポンスが返ってこない間「show processlist;」を繰り返す
 Stateはクエリの実行が終わったと思われるタイミングで「Writing to net」に変わる
 暫くの間「Writing to net」のままとなり、その後、該当プロセスが消える。
 AP側はレスポンスなし。
 尚、正常にレスポンスが返ってくる場合は、「Writing to net」のStatusは見ることができない。
 (すぐにStatsuが変わるため?)
 b)・c)の環境でも同様確認。

⑦MySQLのクエリログを取得するようにしてログ確認
 該当プロセスについて「Prepare」のログはあるが「Execute」のログはない。
 (実行が完了した、とサーバが判断できないためか?)
 尚、正常にレスポンスが返ってくる場合は「Prepare」と対になって「Execute」のログがある。

 ただし、b)の環境の場合は、レスポンスが返ってこない場合も正しくログが出力されている。
 (サーバ名をlocalhostとして指定しているので接続方法がTCP/IPではないためか?)

⑧MySQLエラーログレベルを2に変更して、エラーログを確認
 該当プロセスと思われるものについて

  [Warning] Aborted connection 6810 to db: 'xxxxx' user: 'xxxxx' host: 'xxx-xxx-xxx-xxx.xxxxx.fdn.vectant.ne.jp' (Got timeout writing communication packets)

 とのWarningが存在(xxxは伏せ字)
 ただし、b)の環境ではこのWarningは存在しない。(⑦と同様に接続方法が異なるためか?)

⑨MySQLの「net_write_timeout」値を「60⇒120⇒240」と変更
 現象に変化はなし。
 「show processlist;」をした際「status:Write to net」となっている時間が設定した値に従って伸びる。
 その後、Abortするのは変わらず。
 (要するにネットワークにパケット投げてるけどレスポンスが無いってことか?)

⑩DBサーバのTCPパケットをtcpdumpで取得
 executeの指示を受け取るところまでのやり取りは正常。
 クエリが終了したと思われるタイミング(「status:Writing to net」になるタイミング)で、DBサーバからAPに対してクエリ結果の一部と思われるパケットが出るものの、APサーバからのレスポンスは受信されず。
 その後、「show processlist;」で「status:Write to net」となっている間には、時々、同様のパケットが出る(おそらくレスポンスが無いので再送をしている?)が変わらずレスポンスは無し。

⑪APサーバ(実際にはただのPC)のTCPパケットをWireSharkで取得
 executeの指示を出すところまでのやり取りは正常。
 ⑩のクエリ結果のパケットに相当するものの受信の記録が無い。(ので、レスポンスのパケットも当然ない)
 (ネットワークの問題?とも思ったが、localhostでも同様の現象が出るのでそれは考えにくいか…)

  
 
いちおう、調査したのはこんなところです。
気持ち的には、mysqliがバグかなんかでポートを閉じてだんまりを決め込んでしまっているのかな?と思ったりしています。。。
今後、
 ・PDOを使うとどうなるかを試してみる
 ・localhostではなく「127.0.0.1」を指定してループバックのパケットを見てみる
などをしてみようかとも思うのですが、それ以外でも何かアドバイスをいただければと思います。

よろしくお願いいたします。