У нас есть узкое место на бэкенде при генерации прайса средствами php, около 30 сек, тестировали на Go, 1-2 сек.
Есть пример на php:// Запрос к базе к таблице товаров
// $sql1 .....
// Здесь у нас массив товаров в итоге
$products = [];
// Здесь ключи массива формируются сами от 0 и дальше...
while ($row = mysqli_fetch_assoc($sql1)) {
$products[]['Name'] = $row['Name'];
$products[]['Code'] = $row['Code'];
$products[]['InStock'] = $row['InStock'];
}
// Запрос к базе к таблице товаров
// $sql2 .....
// Здесь у нас массив цен товаров в итоге
$prices = [];
// Здесь ключами массива ставим код товара
// Чтобы в дальнейшем можно было обращаться к ценам
// к примеру так: $prices[$product['code']]['price1']
while ($row = mysqli_fetch_assoc($sql2)) {
$prices[$row['code']]['Price1'] = $row['Price1'];
$prices[$row['code']]['Price2'] = $row['Price2'];
}
// Теперь создаем итоговый общий массив со всеми данными
$productFullData = [];
foreach($products as $product) {
$productFullData[]['Name'] = $product['Name'];
$productFullData[]['Code'] = $product['Code'];
$productFullData[]['InStock'] = $product['InStock'];
$productFullData[]['Price1'] = $prices[$product['Code']]['Price1'];
$productFullData[]['Price2'] = $prices[$product['Code']]['Price2'];
}
// И дальше уже оперируем с массивом $productFullData...
// Формируем прайс .xlsx
И есть пример на Go:package main
// Products список товаров (название, цена, остаток на складе)
type Products struct {
Name string
Code int
InStock int
}
// Prices список цен и код
type Prices struct {
Price2 int
Price3 int
Code int
}
// ProductFullData итоговые данные
type ProductFullData struct {
Name string
Code int
InStock int
Price2 int
Price3 int
}
func main() {
// Получили товары
products := model.Products()
// Получили цены
prices := model.Prices()
// Вопрос!!!
// Как их обединить в один чтобы все
// данные были в одной структуре ProductFullData
// И дальше уже оперируем с массивом $productFullData...
// Формируем прайс .xlsx
}
Участки кода с запросами к базе пропустил сознательно, с этим и так все понятно
Недопонимание у меня именно с тем как из двух структур сделать одну новую со всеми данными, но
внимание, чтобы при генерации второй структуры ключами у цен были коды товаров, а не по порядку (0,1,2...)
В примерах кода я все закоментил чтобы понятно было.
Сразу уточню чтоб не пинали меня толпой :) в Go пришел неделю назад и уже понимаю его мощь, но не все поддается сразу.
Приму как примеры кода так и отсылки к докам.
Но только не такие типа иди сюда по ссылки и кури мануалы, как минимум чтобы типа учи в этом направлении или пробуй вот это...
Всем заранее спасибо!