mysqli ::query(): сервер MySQL исчез — php и mysql

#php #mysql #mysqli #connection #database-connection

#php #mysql #mysqli #подключение #подключение к базе данных

Вопрос:

Неустранимая ошибка: Неперехваченное исключение ‘ErrorException’ с сообщением ‘mysqli::query(): сервер MySQL исчез в functions.php на линии 2108’

ErrorException: mysqli::query(): сервер MySQL исчез в functions.php на линии 2108

=================

У меня есть php-скрипт, работающий в течение 40-50 минут и подключающийся к базам данных на 2 разных машинах в облаке, вставляя и обновляя multi_queries, но время от времени сбой при простом выборе почти в конце скрипта. Компьютеры — Windows Server 2008R2.

Я играл с параметрами как для Apache, так и для MySQL, как предлагалось в разных сообщениях. Я также создал функцию сброса подключения, чтобы время от времени сбрасывать подключение к БД, но я все равно получаю ошибку, указанную выше. Мой сценарий подходит для многих сценариев здесь, но, по крайней мере, сброс соединения должен сработать. Помимо сброса соединения в функции, я также закрываю его только один раз в конце php-скрипта.

Каков правильный способ хотя бы сбросить соединение?

MySQL my.ini:

 [mysqld]
max_allowed_packet = 128M
connect-timeout=10800
wait_timeout = 28800
 

Apache:

 KeepAlive On
 

Функция сброса Php

 function reset_connection()
{
$counter = 100;
$sleep_time = 100;
global $sql,$SERVER,$user,$pass,$db_name,$port;

    $sql->close();
    $sql= new mysqli($SERVER, $user, $pass, $db_name, $port);

    while (mysqli_connect_errno() amp;amp; $counter>0)
    {
        sleep($sleep_time);
        $counter--;

        printf("Connect failed retrying:".mysqli_connect_error());
        $sql= new mysqli($SERVER, $user, $pass, $db_name, $port);
    }

    if(mysqli_connect_errno() || $counter<=0)
    {
        printf("Connect failed".mysqli_connect_error());
    }
}
 

Комментарии:

1. разве для выполнения php-скрипта не требуется 40-50 минут, как насчет запуска его как задания cron?

2. я знаю, что, возможно, запросы и мультизапросы еще не оптимизированы, но накопленное время связано с ожиданием ответов от других API.