форматирование — форматирование результатов запроса с шаблоном типа «массив»

Я создал механизм для форматирования результатов запроса в виде массива с определенным шаблоном.
Например :

<?php

// Pattern
$aPattern = array(
'cust_id' => array(
'@detail' => array(
'@name' => '%{forename} {name}',
'@company' => 'company'
),
'@orders_total' =>
array('article' => 'qty')
)
);

// Query
$sQuery = "SELECT `cust`.*, `order`.`article`, SUM(`quantity`) AS qty
FROM `cust` LEFT JOIN `order` ON `cust`.`id` = `order`.`cust_id`
GROUP BY `cust`.`id`, `order`.`article`";

// Run query and set fetch mode
$oStatement = Data::query($sQuery)->setFetchPattern($aPattern);

// Fetch results
$aRes = $oStatement->fetchAll();

Он отлично работает, но при форматировании большого количества строк (> 5000) это занимает слишком много времени.
Я искал существующие решения, которые могли бы сделать работу более эффективно без успеха.
Прежде чем публиковать код, чтобы спросить, может ли кто-нибудь помочь мне улучшить его, кто-нибудь знает, есть ли класс PHP или что-то подобное, который уже выполняет такую ​​работу?

Заранее спасибо, и извините за любое неправильное использование StackOverflow

0

Решение

Наконец я нашел проблему. Я запускал функцию выборки для каждой строки, найденной в наборе результатов, и каждый раз, когда я сливал результат с глобальным массивом результатов, очевидно, что этап объединения занимал слишком много времени (функция восстановления). Я просто изменил функцию извлечения, чтобы глобальный результирующий массив просто завершался в рекурсивной функции без необходимости слияния. Теперь работает быстро 🙂

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]