Здравствуйте! Есть PHP-парсер, который вставляет данные в MySQL. Код выглядит так.
$url_statistic = file_get_contents("https://example.ru");
$json_statistic = json_decode( $url_statistic );
$statistic = $json_statistic->statistic;
foreach ($statistic as $stat) {
$id = $stat->id;
$name = $stat->name;
$descripition = $stat->description;
$balance = $stat->balance;
$query = "INSERT INTO table (id, name, description, balance) VALUES ('$id', '$name', '$description', '$balance') ON DUPLICATE KEY UPDATE balance='$balance'";
mysqli_query($sql, $query);
}
Получаемый объем данных из file_get_contents вырос в 2 раза. Количество единичных INSERT-ов, соответственно, тоже, что значительно нагружает ЦП (каждый поток парсера отжирает 3% ЦП, раньше было около 1%). Прочитал, что можно собирать INSERT-ы в один множественный, что значительно выгоднее по производительности, типа так:
INSERT INTO myTableName
(idColumnName, columNameOne, columTwo, other_column)
VALUES
(100, 'Name 1', 'Value 1', 'Other 1'),
(101, 'Name 2', 'Value 2', 'Other 2'),
(102, 'Name 3', 'Value 3', 'Other 3'),
(103, 'Name 4', 'Value 4', 'Other 4');
Но как в цикле собрать все это в один INSERT найти не смог и сам не соображу. Если кто сталкивался с подобным, подскажите как быть?