Удаление элементов из инфоблока Битрикс
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
<?php // устанавливаем лимит выполнения скрипта 120 сек set_time_limit(120); // включаем вывод ошибочек ini_set('error_reporting', E_ALL); ini_set('display_errors', 1); ini_set('display_startup_errors', 1); // включаем замер исполнения скрипта $startTime = microtime(true); // логирование pid start $pid = getmypid(); $file = fopen('../logs/detelePid.txt', 'a+'); $message = "pid: [$pid] DELETE : " . date("d.m.Y H:i:s") . PHP_EOL; fwrite($file, $message); fclose($file); // логирование pid end // подключаем prolog bitrix require $_SERVER["DOCUMENT_ROOT"] . '/bitrix/modules/main/include/prolog_before.php'; // подключаем нужные модули CModule::IncludeModule("iblock"); CModule::IncludeModule("sales"); /** * Удаляем картинку элемента * @param int $element_id ID элемента */ function deleteImage($element_id) { $res = CIBlockElement::GetByID($element_id); if ($ar_res = $res->GetNext()) { CFile::Delete($ar_res['DETAIL_PICTURE']); } } /** * Удаляем все элементы из бд * @return [array] */ function deleteElementDisk($block_id, $count) { $arSelect = array("ID"); $arFilter = array("IBLOCK_ID" => $block_id); $res = CIBlockElement::GetList(array(), $arFilter, false, Array("nPageSize"=>$count), $arSelect); $i = 0; while ($r = $res->GetNext()) { $id = $r['ID']; CIBlockElement::Delete($id); // удаляем элемент CCatalogProduct::Delete($id); // удаляем торговое предложение deleteImage($id); // удаляем картинку $i++; } return $i; } $z = deleteElementDisk(7, 10000); $endTime = microtime(true); echo "Удалено записей: {$z}\n"; echo "\nВремя выполнения скрипта: " . ($endTime - $startTime) . " Сек.\n"; //вывод результата |