Ускорить переборку объектов getIterator - foreach
Удалось локализовать проблему modx.pro/help/4935/, тормозит переборка foreach. Может кто может посоветовать, как его ускорить?
foreach ($objects as $object) {
$id_obj = $object->get('id_obj');
$id_m = $object->get('id_m');
$id_dt_obj = $object->get('id_dt_obj');
$id_dt_data = $object->get('id_dt_data');
$object_data[$id_m]['m_name'] = $object->get('m_name');
$object_data[$id_m][$id_obj]['obj_name'] = $object->get('obj_name');
$object_data[$id_m][$id_obj]['obj_type_name'] = $object->get('obj_type_name');
$object_data[$id_m][$id_obj][$id_dt_obj]['org_name'] = $object->get('org_name');
$object_data[$id_m][$id_obj][$id_dt_obj]['work_name'] = $object->get('work_name');
$object_data[$id_m][$id_obj][$id_dt_obj]['dt_obj_name'] = $object->get('dt_obj_name');
$object_data[$id_m][$id_obj][$id_dt_obj][$id_dt_data]['date'] =$object->get('date');
$object_data[$id_m][$id_obj][$id_dt_obj][$id_dt_data]['fact_income'] = $object->get('fact_income');
$object_data[$id_m][$id_obj][$id_dt_obj][$id_dt_data]['fact_expense'] = $object->get('fact_expense');
$object_data[$id_m][$id_obj][$id_dt_obj][$id_dt_data]['fact_inner_income'] = $object->get('fact_inner_income');
$object_data[$id_m][$id_obj][$id_dt_obj][$id_dt_data]['fact_inner_expense'] = $object->get('fact_inner_expense');
$object_data[$id_m][$id_obj][$id_dt_obj][$id_dt_data]['fact_residue'] = $object->get('fact_residue');
$object_data[$id_m][$id_obj][$id_dt_obj][$id_dt_data]['forecast_expense'] = (float) $object->get('forecast_expense');
}
Выполняется 4,5 — 5 секунд. Если делать не get, а toArray(), то скорость снижается примерно на секунду. Комментарии: 1
Решение оказалось простое, надо было лишь отказаться от xPDO))) с 5 секунд до 0,4 секунды.
Спасибо Василию Наумкину!
modx.pro/help/4935/#comment-35591
Может кому пригодится еще)
Спасибо Василию Наумкину!
modx.pro/help/4935/#comment-35591
Может кому пригодится еще)
if ($c->prepare() && $c->stmt->execute()) {
while ($row = $c->stmt->fetch(PDO::FETCH_ASSOC)) {
print_r($row);die;
}
}
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.