Добрый день!
На сайте имеется скрипт, который создает прайслист ~ 10000 товаров
вчера заметил что скрипт временами валится с ошибкой:
Fatal error: Class 'Bitrix\Main\Diag\HttpExceptionHandlerOutput' not found in /home/bitrix/www/bitrix/modules/main/lib/httpapplication.php on line 54
Выснилось, что это каким то образом связано с методом CFile::ResizeImageGet с помощью которого ресайзятся картикидл вставки в прайс
Примеры кода:
while($ob = $res->GetNextElement()) {
$fields = $ob->GetFields();
$resizeImage = CFile::ResizeImageGet(
$fields["~DETAIL_PICTURE"],
array("width" => 150, "height" => 150),
BX_RESIZE_IMAGE_PROPORTIONAL,
true
);
if (!$resizeImage) {
$fields['DETAIL_PICTURE'] = '/local/templates/eshop_bootstrap_black/components/bitrix/catalog.element/quick-view/images/no_photo.png';
} else {
$fields['DETAIL_PICTURE'] = $resizeImage['src'];
}
$fields['IMAGE_PATH'] = $_SERVER["DOCUMENT_ROOT"] . $fields['DETAIL_PICTURE'];
$arElements[] = $fields;
}
На данном этапе создается массив $arElements, ошибок нет
далее подключается PHPExcel
$objWriter = PHPExcel_IOFactory::createWriter($excel, 'Excel2007');
$objWriter->save($filePath);
и при сохранении excel файла вылетат ошибка
Fatal error: Class 'Bitrix\Main\Diag\HttpExceptionHandlerOutput' not found in /home/bitrix/www/bitrix/modules/main/lib/httpapplication.php on line 54
Пробовал отдавать в PHPExcel меньшее кол-во товаров, пытаясь выяснить на каком товаре ломается скрипт, но ошибка может вывалится при обработке 4000, или 6000, короче не понятно в общем из-за чего она.
Если из кода убрать ресайз картинок, все отлично работает. Так же пробовал вместо всех картинок подтыкать картинку no_photo.png с ней тоже нормально создается прайс из 10000 товаров
в общем итоге это сявзяано с CFile::ResizeImageGet, который по коду подключается выше Phpexcel и по идее ни как не должен влиять на его работу