Pathologic
fgetcsv и все такое изучил уже? ((:
Alexander
с разрешения спонсора Иван Смирнягин, выложил интеграцию с multiCategoreis в открытый доступ)
Alexander
fgetcsv и все такое изучил уже? ((:
это я пользовал, я не юзал раньше fputcsv
Alexander
небольшой видос по изменения в плане интеграции с MultiCategories
Alexander
Огромный респект за терпение и наставления @webber_12
Alexander
до сего дня я не знал что можно без крона через рекурсию обработать эксель файл на хоть сколько строк) теперь знаю
Pathologic
зачем через рекурсию
Alexander
командир сказал так, значит так 😀
Pathologic
https://github.com/box/spout
Alexander
https://github.com/box/spout
есть такой, но он мне не понравился. Если будет время думаю лучше уж тогда обновляемый SpreedSheet поставить.
Ilya
а картинки сохраняет ?
Pathologic
хотя мне редко приходилось с xlsx что-то делать
Pathologic
csv самый удобный вариант
Alexander
ну тут видишь,это если б во фронтенде создавалась нагрузка посетителями. то да, имело бы смысл. А так чаще всего один админ. Нагрузки и не заметишь.
Pathologic
в смысле не заметишь
Pathologic
у тебя же время выполнения ограничено
Alexander
ну это же чтение файла, попробуй сам загрузить.
Pathologic
так проблема не в чтении, а в разборе
Pathologic
чем больше строк успеешь разобрать, тем лучше же (:
Alexander
а разбор как раз через рекурсию аякс запросами идет, порциями
Alexander
и разбор уже идет не экселя. а массив созданный из него
Ilya
можно накрайняк https://c2n.me/433mNOL или max_execution_time
Ilya
Но на шаредах хз, там вроде 128 лимит памяти часто и 30 сек выполнение
Pathologic
нужно провести тест с миллионом строк (:
Alexander
нууууу
Alexander
на больше 100 тыщ думаю уже крон и самописное решение
Pathologic
я последний раз делал импорт, где csv файлы под 100 мегабайт
Alexander
там и таблица просто браузер повесит нах.
Ilya
повесят сообщения о успешности добавления каждой строки =) браузер
Pathologic
сначала да, а потом я придумал как ускорить в 40 раз (((:
Ilya
array_chunk ?
Alexander
как, расскажи
Ilya
Ну как ? Рассказал ? +)
Alexander
да) завтра буду тестить. Это гениально! а т оу меня много апдейтов прайсов
Ilya
Секретничают ... ля какие =)) Расковыряем жеж потм всеравно поделку =)
Alexander
😂😂 так это не для поделки. Это просто подход.
Alexander
для обновления больших прайсов через крон
Ilya
Просто очень интересно можно ли уложить 500 000 строк ЦСВ в 128 метров шаред хостинга памяти и 30 сек выполнения дефолтного
Alexander
модуль я переделывать не буду, он и так хорош)
Pathologic
нельзя
Ilya
а mysql ?
Pathologic
при чем тут mysql
Ilya
Всмысле переписать 500 к строк из одной таблчики в другую пускай с изменениями какими-либо
Ilya
Просто интересно, как специалистов спрашиваю
Pathologic
разбивай на части
Ilya
тут просто недавно делал, правда на ларке обработку 2-х таблиц на 65000 и 650 000 строк, в память не уложился 128, пришлось ставить 1024. Но по времени вроде норм 20-30 сек. По этому и интересно. Как у вас что получается, мб есть варианты лучше =)
Ilya
Разбил на части, но получился большой массив, который в память не влез видимо =)
Pathologic
делить на сколько, на 10?
Pathologic
или на 100 сразу?
Pathologic
в чем обработка заключалась?
Pathologic
мне просто доводилось переделывать импорты на чистом говнокоде с прямыми запросами в базу, и то там не было таких чудесных результатов
Pathologic
хотя может конечно кривизна modx в плане организации данных мешает
Pathologic
но и в условиях получше, без тв и такого всего, не мгновенно все происходило
Pathologic
а у тебя 650000 строк за 20 секунд
Ilya
смысл был простой, там 2 таблицы итоговые должны были получиться, почти как в модиксе content и TV связка таже по ИД ресурса. Была одна большая таблчика на 650 к записей примерно и у каждой записи, как в модиксе в контенте был parentID. Нужно было найти всех самых главных родителей самого верхнего уровня и записать их в одну табличку на 65 000 которая в итоге получилась. А их детей поместить в другую с relation по id родителя из первой таблички. Самая хреновость в том, что мы не знаем ИД строки из таблички с родителями чтобы привязать детей, пока не добавим в нее строку. Пришлось работать с массивами и коллекциями. Там был один нюанс, который помог. У каждой записи был собственный код, если его сохранить можно сделать потом select и у знать по нему Id записи и присоединить детей. Кароче тут история будет на миллиард строк со всеми подробностями. Получилось запихнуть все это в 2 tableSeedera но при этом выжрать память на гиг, на скрине с запасом =) https://c2n.me/433nox8
Ilya
Скрин жирной таблчики https://c2n.me/433npot на 650 к ее структуры
Ilya
code и code_parent - волшебные штуки которые позволили построить итоговый массив
Pathologic
ну с такой структурой может быть
Pathologic
но это если только читать из файла и писать в таблицу
Ilya
Я просто понял одно если бы в цикле я проходил каждую запись из 65 000 чтоб записать в одну табличку и затем еще и детей найти и записать их в другую, это смерть +)
Pathologic
а всякие поиски и проверки да еще с перегрузом из-за коллекций...
Ilya
Я хз могу пробнуть выложить кудато сидеры если надо с миграциями и sqlами =) я не знаю как это все на пальцах расписать, тут выкинут из чата =)
Ilya
В принципе итог получился не такой уж и длинный супер код =) https://c2n.me/433nrXE
Ilya
это второй главный сидер на 650 к
Ilya
кароче ладно
Pathologic
а, тут другое совсем
Pathologic
из одной таблицы перебрать и в другую засунуть
Pathologic
а мы про импорты говорили
Ilya
Ну может быть, конечно тут еще и уровень один в цсв вроде как + файлы вроде качать не надо
Ilya
всмысле нет парентов там всяких
Ilya
и чилдов
Pathologic
так такие задачи смысла нет вообще вписывать в 30 секунд
Pathologic
в консоли ограничений нет
Pathologic
память зато важна
Ilya
Мы тут с модиксами сидим, я есть люди которые с лярдами записей каждый день работают =))