MySQLに接続する非常に長い間使用しているlnk()という素晴らしい関数があります。最近、mysqli_ping呼び出しを追加して接続を確認し、必要に応じて再接続することにしました。デーモン(24時間年中無休で実行)で問題が発生し、長期間非アクティブになった後もMySQLへの接続が失われ続けたためです。
実装後、複数のクエリで問題が発生し始めました。MySQLへの接続は、mysqli_store_resultがpingの前に来ない限り、mysqli_multi_queryの後に送信された場合、pingが送信された時点で失われます。
$mq = mysqli_multi_query(lnk(), "SHOW PROCESSLIST;");
mysqli_next_result(lnk());
$result = mysqli_store_result(lnk());
while($row = mysqli_fetch_row($result)) {
print_r($row);
}
なぜこれが起こっているのか考えはありますか?
このような場合に接続チェックを無視するために、ライブラリに変数を追加することを提案しないでください。私はすでにそれについて考えました、そしてそれは十分ではありません。なぜこれが起こっているのか、そしてこの場合、pingが私の接続に何をするのかを正確に知る必要があります。