@symfony_php

Страница 756 из 1418
Sergey
18.03.2018
17:59:46
param converter есть же
да, с этим и жил на 3.0)

Sergey
18.03.2018
18:01:23
я вот недавно контроллеры пописал на симфе

Google
Sergey
18.03.2018
18:01:30
и как-то печально стало

из-за отсутствия нормальной работы с json body

Sergey
18.03.2018
18:02:28
нет варианта из коробки

нужно свой собирать

Sergey
18.03.2018
18:03:02
что свой собирать?

ты ро то что Request тебе максимум даст строку а дальше делай что хочешь?

Sergey
18.03.2018
18:03:31
да

валидацию конвертацию и тд

Sergey
18.03.2018
18:03:40
ну да, это так себе.... но аргумент ресолверы же)

Sergey
18.03.2018
18:03:53
ну эт и есть собирать самому )

Sergey
18.03.2018
18:04:50
ну а что бы ты хотел?)

JsonRequest?

Google
Sergey
18.03.2018
18:05:01
с поддержкой json path?

Sergey
18.03.2018
18:05:02
а вот хз даже

поэтому и плохо

нет какого-то варианта из коробки

шоб удобно)

не хочу лишний раз думаьб

Sergey
18.03.2018
18:06:03
нет какого-то варианта из коробки
у всех разные запросы - потому этого нет из коробки))

http://udidahan.com/2016/02/19/ask-udi-two-services-operating-on-the-same-entity/

вот еще неплохая статья с отсылками на другие статьи)

для тех у кого не круд)

Sergey
18.03.2018
18:11:58
vimeo на пхп?

Alexandr
18.03.2018
18:32:41
Ребят, привет. Я новичок, пожалуйста подскажите мне: Делаю массовое заполнение данных (Insert или Update), использую доктрину, но скорость прям очень и очень медленная, где-то 8 тысяч записей за 40-60 минут. Как делаю и SQL дамп https://pastebin.com/raw/yTmZRiWZ что я делаю не правильно?

Alexandr
18.03.2018
18:33:51
@fes0r можешь направить на путь истенный? За образец брал это http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/batch-processing.html

Sergey
18.03.2018
18:35:21
ну то есть проблема у тебя 90% что с UoW

и даже тот факт что у тебя там итерации по 500 штук

не говорит сколько объектов крутится в UoW

более того, может быть узкое место вообще твой этот validate

+ если ты делаешь clear, есть часто повторяющиеся запросы на SELECT, нет secondary level кэша, может быть тоже медленно

(я думаю даже что ты по этой причине поставил 500 а не 50)

Google
Alexandr
18.03.2018
18:39:39
Прости пожалуйста, UoW - много объектов? validate - проверяет что бы оба значения в объекте было true. clear - получается вообще тут бесполезен? Так как хранит только select?

Sergey
18.03.2018
18:40:36
> clear - получается вообще тут бесполезен? Так как хранит только select? нет, UoW хранит все. Если ты сделал селект 1000-чи сущностей на 500 итераций у тебя в UoW будет 1500 сущностей

или больше если у тебя сущности которые ты персистишь включают в себя еще какие-то

(можно посчитать достав identity map из uow, шутки ради можешь это сделать перед clear)

еще - можно попробовать завернуть все это в транзакцию сверху

хотя ты и так делаешь 1 флаш

Vladislav
18.03.2018
18:43:19
Покажи свой батч процессинг

Я с ним извращался как угодно уже ))

Sergey
18.03.2018
18:43:51
Покажи свой батч процессинг
процессинг он кинул - там с виду все ок (только количество итераций дофига)

Vladislav
18.03.2018
18:44:57
Хз, там только внутрення часть. Как он делает по 500 записей?

Он делает только один clear

Vladislav
18.03.2018
18:45:22
Покажи все плис

У меня 100к экселя пишется оч быстро, за итерацию 6 энтитей связывается

Alexandr
18.03.2018
18:47:50
полностью вся функция, задача взять существующие записи новостей и составить новую таблицу если адрес новости отдаёт ответ отличный от 200 https://pastebin.com/raw/RjpnS9tc

Sergey
18.03.2018
18:48:25
> $entities = $this->em ->getRepository(News::class) ->getOnlyActiveNews($limit,$offset,[ NewsBad::class, 'newsBad', 'WITH', 'newsBad.news = n.id' ]);

сколько у тебя там сущностей?

clear нету

Alexandr
18.03.2018
18:49:10
около ста тысяч

Sergey
18.03.2018
18:49:32
.....

Google
Alexandr
18.03.2018
18:49:34
но я же поставил лимиты, что бы брать по очереди

Sergey
18.03.2018
18:49:38
13.2.2. Iterating results

в доке

и clear

и делай clear каждые 100 итераций например

Vladislav
18.03.2018
18:50:05
100 -150 оптимально

около ста тысяч
А ты смотрел профайлер ?

Admin
ERROR: S client not available

Vladislav
18.03.2018
18:50:51
Там же все написано будет ))

Sergey
18.03.2018
18:50:55
но я же поставил лимиты, что бы брать по очереди
->getOnlyActiveNews($limit,$offset,[ NewsBad::class, 'newsBad', 'WITH', 'newsBad.news = n.id' ]);

а вот это что?

что-то мне подсказывает что это one-to-many или many-to-many

Alexandr
18.03.2018
18:52:12
https://pastebin.com/raw/hr9VqCxQ

Vladislav
18.03.2018
18:52:29
ой

Alexandr
18.03.2018
18:52:32
я вынес просто запрос в репозиторий, что бы использовать повторно

что такое?

Vladislav
18.03.2018
18:52:41
открой про батч селект

ты ж понимаешь что offset limit не спасут если ты не чистишь юнит оф ворк?)

ну вот ты обработал 100 сущностей и надо их почистить

я про этот метод

Google
Vladislav
18.03.2018
18:54:11
checkingBadLinks

Alexandr
18.03.2018
18:54:38
В конец обратно добивить clear?

Vladislav
18.03.2018
18:54:42
крч смотри. тебе надо итератор + запись по 100 и после каждых 100 ты чистишь uow

Sergey
18.03.2018
18:55:22
я бы предложил еще сделать выборки по другому

1. выбрать только айдишки

2. потом по айдишкам доставать по 10 штук твоих сущностей

судя по всему там еще релейшенов дохера

Alexandr
18.03.2018
18:56:01
Да мне связи нужно для обработки

Vladislav
18.03.2018
18:57:21
около такого

но насчет айди тебе правильно говорят

и кстати глянь что такое $em->getReference()

если знаешь айди - не надо выбирать всю сущность

крч возьми на вооружение 1) итератор для выборки 2) получить id вместо обьекта и юзнуть getReference 3) каждых 100-150 итераций clear flush 4) заверни все в try catch и в случае фейла делай ролбэк

Alexandr
18.03.2018
19:01:27
не очень понимаю, причём тут clear, если первая итерация занимает c cохранением 40 секунд, без сохранения (persist and flush) - 3 секунды ?

Sergey
18.03.2018
19:02:24
с сохранением - делаешь)) разберись что такое unit of work

Alexandr
18.03.2018
19:02:52
то есть сохранять 100 записей 37 секунд норм?

Sergey
18.03.2018
19:02:52
грубо говоря, когда ты делаешь persist ты говоришь UoW следить за сущностью

Страница 756 из 1418