Почему в битриксе странно работает file_put_contents()?

Пример скрипта экспорта каталога
$arSelect = [ 
       'ID', 'IBLOCK_ID','IBLOCK_CODE','IBLOCK_SECTION_ID','NAME', 'LIST_PAGE_URL', 'DETAIL_TEXT', 'DETAIL_PICTURE', 'DETAIL_PAGE_URL', 'SECTION_PAGE_URL', 
       'PROPERTY_CML2_ARTICLE','PROPERTY_MODEL','PROPERTY_BRAND', 'PROPERTY_GABARITY_VKHSHKHG_SM' 
   ]; 
   $arFilter = Array( 
       "IBLOCK_ID"=> $iblockId, 
       '!IBLOCK_SECTION_ID' => SECTION_NEMATRITSA_ID, 
       "PROPERTY_COPY_PROPERTIES" => 1, 
   ); 

   $res = \CIBlockElement::GetList(Array('IBLOCK_SECTION_ID'=>'ASC', 'PROPERT_BRAND_VALUE' => 'ASC'), $arFilter, false, false, $arSelect); 

   $arElements = []; 
   $i = 0; 
   while($ob = $res->GetNextElement()) { 
       $fields = $ob->GetFields(); 
       $fields['PRODUCT_INFO'] = CCatalogProduct::GetByID($fields['ID']); 

       if ($fields["~DETAIL_PICTURE"] != null) { 
            $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/.default/images/no_photo.png'; 
           } else { 
               $fields['DETAIL_PICTURE'] = $resizeImage['src']; 
           } 

           $fields['IMAGE_PATH'] = $_SERVER["DOCUMENT_ROOT"] . $fields['DETAIL_PICTURE']; 
       } else { 
           $fields['IMAGE_PATH'] = $_SERVER["DOCUMENT_ROOT"] . '/local/templates/eshop_bootstrap_black/components/bitrix/catalog.element/quick-view/images/no_photo.png'; 
       } 

       $arElements[] = $fields; 
       file_put_contents('test.csv', $fields['IMAGE_PATH'] . "\r\n", FILE_APPEND); 
       $i++; 
   }


проблема проявляется при записи в файл, изнчально используется PHPExcel, но также не работает функция file_put_content

При использовании file_put_contents функция перестает записывать данные в файл примерно на 3000 - 4000 строке, причем последняя строка каждый раз разная, всего в каталоге 7300 элементов

цикл отрабатывает полностью, но в файл данные перестают записываться, пробуем убирать из скрипта кусок кода:
$resizeImage = CFile::ResizeImageGet( 
               $fields["~DETAIL_PICTURE"], 
               array("width" => 150, "height" => 150), 
               BX_RESIZE_IMAGE_PROPORTIONAL, 
               true 
           );

и все прекрасно работает данные в файл пишутся, а с CFile::ResizeImageGet просто перестает писать в файл (file_put_contetns возвращает false)

подскажите в чем может быть проблема, из-за чего при использовании CFile::ResizeImageGet может перестать работать file_put_contents

CentOS, php 7.0, веб окружение битрикс.

В логах ошибок нет.
  • Вопрос задан
  • 815 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Koen777
DeveloperGeorg
А какие характеристики у виртуалки? Может не хватает памяти в буфере при генерации?

А вообще, предпочтительнее использовать spl-объекты. Вот твой
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы