Mysql 1041 лимит запросов в php

0

У меня есть PHP-скрипт (функция mysqli), который генерирует insert into... запросы как array of strings и отправляет их в базу данных mysql один за другим. Проблема в том, что существует около 40000 запросов, и моя база данных всегда перестает вставлять новые после 1041 и вскоре позже закрывает соединение.

Это ограничение php или проблема с mysql? Или может быть что-то еще? Как я могу избежать этой проблемы и отправлять все запросы в базу данных?

Вот код:

        $data // my array of strings - mysql queries

        ini_set ('error_reporting', E_ALL);
        ini_set ('display_errors', '1');
        error_reporting (E_ALL|E_STRICT);

        $connection = mysqli_init();
        mysqli_options ($connection, MYSQLI_CLIENT_SSL_VERIFY_SERVER_CERT, true);

        mysqli_ssl_set($connection,'/usr/local/certs/client-key.pem',
       '/usr/local/certs/client-cert.pem', '/usr/local/certs/server-ca.pem', NULL, NULL);

        $link = mysqli_real_connect ($connection, $db['host'], $db['user'], $db['password'], 
       $db['dbName'], 3306, NULL,MYSQLI_CLIENT_SSL_DONT_VERIFY_SERVER_CERT);


        if (!$link)
        {   
            die ('Connect error (' . mysqli_connect_errno() . '): ' . mysqli_connect_error() . "\n");
        } 
        else 
        {   

           foreach ($data as $index => $queryToSend) {

                if($connection->query($queryToSend))
                {
                    $this->output->writeln('succesfull query number: '.$index);
                }   
           }



            $connection->close();
        }
Теги:
mysqli

2 ответа

1
Лучший ответ

Я думаю, вы должны попробовать пакетную вставку, это поможет вам преодолеть проблему, с которой вы сталкиваетесь.

Вот ссылка Как сделать пакетную вставку в MySQL

1

Измените время выполнения по умолчанию в файле php

ini_set ('max_execution_time', 120); //120 секунд

Я надеюсь, это поможет.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню