Или единственный вариант только запускать скрипт на отдельном сервере?Не единственный путь, но единственный правильный.
приходится открыть более 3000 страницОн же открывает их не одновременно? Делайте sleep между запросами. Не пытайтесь отпарсить всё за один проход, загружайте "сырой" html во временную таблицу, а парсинг по этим временным данным запускайте отдельно.
да, это происходит в личном кабинете пользователя
$arSelect = Array('ID');
$arFilter = Array("IBLOCK_ID"=>8, 'SECTION_ID'=>2208,"ACTIVE_DATE"=>"Y", "ACTIVE"=>"Y", '>=CATALOG_QUANTITY' => 1);
$res = CIBlockElement::GetList(Array(), $arFilter, false, Array("nPageSize"=>900), $arSelect);
while($ob = $res->GetNextElement()){
$arFields = $ob->GetFields();
print_r ($arFields[ID]);
echo "</br>";
$elements = \Bitrix\Iblock\ElementTable::getList(array(
"filter" => array(">=ACTIVE_FROM" => "ТЕКУЩЕЕ_ВРЕМЯ", "<=ACTIVE_TO" => "ТЕКУЩЕЕ_ВРЕМЯ")
))->fetch();