Привет всем.
В общем такая ситуация, есть файл CSV с 300к строк.
у меня виртуальный хостинг с ограничением по времени 300сек.
Читаю файл и обнавляю цену так:
//если файл читается...
if (($handle = fopen("price.csv", "r")) !== FALSE) {
//обрабатываем построчно...
while (($data = fgetcsv($handle, 4000, ";")) !== FALSE) {
//обходим инфоблоки товаров по артикулу....
$arFields = "";
$arSelect = Array("ID", "NAME", "DATE_ACTIVE_FROM");
$arFilter = Array("IBLOCK_ID"=>5, "PROPERTY_CML2_ARTICLE" => $data[4]);
$res = CIBlockElement::GetList(Array(), $arFilter, false, Array("nPageSize"=>2), $arSelect);
while($ob = $res->GetNextElement())
{
$arFields = $ob->GetFields();
}
if ($arFields) {
//если найден элемент обнавляем цену
CPrice::SetBasePrice($arFields['ID'], (int)$data[12], "RUB", 0);
}else{
//если НЕ найден элемент выводим информацию по нему
?><pre><? print_r($data)?></pre><hr><?
}
}
echo $row;
fclose($handle);
}
:
Проблема в том, что когда 5к строк, он отрабатывает, долго но отрабатывает, уходит меньше 300сек,
но в файле 300к позиций, это в 60 раз больше и времени на обработку нужно больше.
Вот теперь вопрос: как например читать с определенной строки, или как нибудь например я бы на кроне запускал бы каждые 10 минут читая по 1000 строк и удаляя их после чтения..., или есть может какой нибудь другой способ?
Пытался на VPS перейти, но VPS за 400р в мес, оказался слабее виртуального за 300р