Есть проблема парсинга JSON. Есть класс на PHP, который в CLI режиме, через cron парсит JSON файл (выгрузка с другого микросервиса) с записями. Записей в среднем 150к. Задача заносить их в базу Mysql. Суть работы метода: Беру файл, читаю, преобразую через JSON_DECODE в массив, затем перебором по циклу заношу записи в базу. Для каждого запроса Insert создается новый линк в базу (mysqli_connect к базе), затем сначала БЕЗ параметра метода mysqli_query(MYSQLI_ASYNC) записи добавлялись в течении 10 минут. С данным параметром записи добавляются в течении минуты, но плодятся тысячи запросов в секунду, но в методе после INSERT запроса соединение должно разрываться (присутствует mysqli_close($asyncLink), но в некоторых случаях этого не происходит, и выловить почему не могу. В итоге проблема с тем, что количество запросов превышает максимально допустимый в конфиге. Количество оперативной памяти нет смысла увеличивать(пробовал, VPS), т.к. кол-во запросов будет плодиться больше и проблема оттянется на пару дней, но не решится, и придется снова лезть на сервак и тушить mysql сервер, что не гуд. Все должно работать автоматически (файлик упал, сервер увидел, прочитал, занес, удалил). В общем кусок кода:
private function parseJson()
{
$start = microtime(true);
$json = file_get_contents($this->jsonPath);
$data = json_decode($json, true);
$i = 0;
foreach ($data as $entry) {
foreach ($entry as $good) {
$asyncLink[$i] = new mysqli('localhost', 'root', 'pass');
$shopx = mysqli_real_escape_string($asyncLink[$i],$good['shop']);
$goodx = mysqli_real_escape_string($asyncLink[$i],$good['goods']);
$amoutx = (int)$good['count'];
$pricex = mysqli_real_escape_string($asyncLink[$i],$good['price']);
$pricex = (int)$pricex;
$query = "INSERT INTO goods.goods (shop,good,amout,price) VALUES('$shopx','$goodx','$amoutx','$pricex');";
$result = mysqli_query($asyncLink[$i], $query, MYSQLI_ASYNC) or die(mysqli_error($asyncLink[$i]));
mysqli_close($asyncLink[$i]);
$i++;
}
}
Проблема: MySQL Error “Too many connections” (При этом кол-во активных соединений 4 - 4.5к, добавлено 45к+ записей
Версии:
PHP 7.4.3 (cli) (built: Feb 23 2020 07:24:28) ( NTS )
SQL Ver 14.14 Distrib 5.7.29, for Linux (x86_64)
Есть предложения?