Вадим Раевский

Вадим Раевский

Был в сети 18 октября 2020, 18:13
Заказы не принимаю
Значение передается в сниппет через FormItRetriver,
$sql = "SELECT `code` FROM `cityes` WHERE `name` = :name";
// Подготавливаем шаблон SQL запроса
$statement = $modx->prepare($sql);
// Выполняем запрос подставляя данные

if ( $statement->execute(array("name"=>$from)) ) {
    echo $from; //Значение есть
    $result = $statement->fetchAll(PDO::FETCH_ASSOC);
    echo '<pre>';
    print_r($result); //Также, пусто
    echo '</pre>';
}
Добрый день!

Возможно, глупость напишу. Компонент приобрел — работает нормально. Но, необходимо импортировать много товаров (сейчас 16000, дальше 25000 новых и по нарастающей). Поставил время выполнения скрипта 60000 (шестьдесят тысяч) секунд. Обработка заканчивается ~ минут через 20, компонент не создает ресурсы, а просто «висит». Понимаю, что можно разбить файл на части (сейчас так и заливаю).

Возможно ли в будущих версиях реализовать построчную разбивку исходного прайс-листа и постепенную его загрузку? Или как-то возможно обойти все лимиты? Как на PHP реализовать такое не представляю вообще (Давно пробовал дописать в исходный импорт bezumkin'a используя flush() ). Напишу пример скрипта, который заливает нонстопом через консоль. Можно уйти, оставив компьютер включенным и он отработает.

#!/bin/bash

split ./import.csv -l 500 -d ./import/import.
rm ./import.csv
START=$(date +%s)
find ./import -type f | while read FILENAME; do
mv "./import/$FILENAME" `basename "/import/$FILENAME".csv`;

PSTART=$(date +%s)

php ./csv.php "/assets/import/$FILENAME" "parent,size,pagetitle,vendor,marka,kuzov,dvig,made_in,color,rul,introtext,old_price,gallery" 1 "pagetitle" 0 "^"
rm $FILENAME
sleep 15
PEND=$(date +%s)
PDIFF=$(( $PEND - $PSTART ))
echo "Часть обработана за $PDIFF"
sleep 10
done
END=$(date +%s)
DIFF=$(( $END - $START ))
echo "Общее время выполнения $DIFF"
Спасибо.