Пока только Армянское Радио подкинул идею, что замедление может быть в том, что симфони пишет в свой лог отдельную запись на каждое исключение - я в этом сомневаюсь
Такие задержки по времени выглядят как проблема на уровне логирования исключений, тк I/O операции над файлом долгие, а сбор трейса исключений и его запись — долгие потенциально.
Уйдя от исключений вы возможно ушли и от логирования исключений.
Я не стал в вопросе погружать по все тонкости обработки
Сейчас вот до отказа от Exception дошло.
Для оптимизации там уже была выброшена ORM
Я не стал в вопросе погружать по все тонкости обработки
<?php
$data = [
['123' => [444]],
['123' => [666]],
['123' => [555]],
['444' => [7777]],
];
$result = array_reduce($data, function(array $acc, array $it) {
// $key => $element — если весь массив с ключом (в вашем случае 72) внести
foreach($it as $key => [$element]) {
$acc[$key][] = $element;
}
return $acc;
}, []);
var_dump($result);
// [
// 123 => [
// 444,
// 666,
// 555,
// ],
// 444 => [
//. 7777
//. ],
// ]
ТАк вот, когда я заменил запись каждой строки в файл на буферизированную запись (то есть пишется в буфер и при накоплении идет сброс буфера в файл), то ускорение было примерно в 10 тыс раз (или даже в 100 тыс раз, не помню точно)
Файл как и сеть — очень долгие операции ввода/вывода (I/O), когда вы прокручиваете тысячи записей, ловите исключения и пишите в синхронном варианте (если не используете асинхронные фреймворки и делаете по классике в пхп) в лог, то это оооочень долгие операции относительно создания объекта исключения
Напомню: на локальном компе я создал 15000 объектов исключений и накладные расходы были на все них меньше сотой секунды (добавь я запись в файл каждого, то прилетели :) а если еще раздуть стек-трейс и эти портянки в логи писать, так вообще