Павел
Флашить в доктрине в цикле под транзакцией норм тема, или говно?
Что ты подразумеваешь под норм темой и чего ты хочешь добиться?
The Ant
да просто в цикле создаю сущности, и чтобы сделать дтошку для ивента с идом нада сделать флаш сначала
The Ant
либо в коллекцию собирать, и после флаша ивенты делать. но мне не охота 2 цикла
Павел
А кажется понял, у тебя флашер принимает одну сущность и можно только ее кинуть в диспатчер?
Павел
Или нет...
Павел
Напиши код)
Nikolay
Напиши код)
У него автоинкрементный айдишник, который надо передать в ивент
The Ant
Напиши код)
вот пример с флашем в цикле, работает
Nikolay
вот пример с флашем в цикле, работает
Флаш не надо в цикле делать никогда
Павел
У него автоинкрементный айдишник, который надо передать в ивент
Если так, то сохранить сущности а потом кинуть ивенты
The Ant
Напиши код)
вот код с вынесенным флешем за цикол. Приходится второй делать )
Nikolay
причина?
Потому что доктрина может навернуться от нехватки памяти
Павел
Как доктрина новернется от 50 транзакций по 1 сущности или 1 транзакция все 50. Они все равно все в памяти UOW
Nikolay
Почему?
Ну потому что не один раз такое было когда в цикле такое вместе с флашем, а потом ошибка entity manager closed
The Ant
Ну потому что не один раз такое было когда в цикле такое вместе с флашем, а потом ошибка entity manager closed
после флаша в любом случае будет манагер клосед, если транза не пройдет
Павел
@theantt я бы сделал без доп транзакции, вообще не понимаю зачем она тебе там, когда флаш сам по себе подразумевает транзакцию. Зафлашил один раз, а потом собрал ids
Nikolay
Мб, ниразу не встречал
Память течет, даже в документации доктрины показано как батч инсерты или апдейты делать
Павел
Память течет, даже в документации доктрины показано как батч инсерты или апдейты делать
Батч инсерты это про 1000 сущностей и там про clear. И опять же никакого отношения к флаш в цикле не имеет
The Ant
Не понял поинта
ну оно 2 файла сохранит и крашнется, а потом снова их сделает
Павел
ну оно 2 файла сохранит и крашнется, а потом снова их сделает
Так ты не делай флаш в цикле, а делай 1 на всю операцию
The Ant
хотя если флаш за циклом такого не будет
The Ant
да блин мне не нравится 2 цикла делать, какое-то дерьмо )
The Ant
а как?
The Ant
до флаша идов не будет
Павел
А зачем два
Цикл чтобы сделать сущнсти, а потом собрать ids после flush
The Ant
а ууид я чет не хочу
Nikolay
а ууид я чет не хочу
Только этот вариант решает проблему нормально
The Ant
Только этот вариант решает проблему нормально
нет, ууид все равно надо проверять на дубли
Павел
Но в любом случае транзация с циклом флашей внутри хуже, минимум по БД, так как там закрываются и открываются Savepoint
The Ant
шанс хоть и маленький, но вероятность коллизии есть
Nikolay
шанс хоть и маленький, но вероятность коллизии есть
Там уже новые типы ууидов есть, но и 4 версии нормально работает
The Ant
Там уже новые типы ууидов есть, но и 4 версии нормально работает
все равно, я очень часто в бд смотрю, и ууиды крайне сложно воспринимать
The Ant
и надо часто по списку идов выводить записи, тоже шняга получается )
The Ant
потому что 500 ууидов куда вводить? в какое поле? через запятую
The Ant
как потом ссылку на этот датасет скинуть другому челу? я хз, дерьмо ууиды эти )
The Ant
м.б. snowflake id получше будет
The Ant
а чо нынче автоинкрементами вообще никто не пользуется чтоле?
Vlad
а чо нынче автоинкрементами вообще никто не пользуется чтоле?
мы юзаем юиды + коды сгенерированные по алфавиту длиной 10 симв
Vlad
ну, нет. ПК - юид, на некоторых сущностях есть еще код, тоже юник
Vlad
код более человекочитаемый просто
The Ant
типа как на ютабе?
Vlad
опередил
The Ant
такой код требует проверки на уник )
Vlad
юник индекс
The Ant
я делал такой, и коллизий ппц много
Vlad
я для проверки генерил 25 мультов кодов
The Ant
даже на 50к записей порой бывает
Vlad
ни одной коллизии
Павел
даже на 50к записей порой бывает
чет как то мало для коллизий
Павел
Понятно что возможно и при 1 записи
The Ant
чет как то мало для коллизий
ну вот да, думал что хватит на лямов 50-100, а нихуя )
Vlad
это хуйня
The Ant
это хуйня
хз, в случае с циклом, транза зафейлится в таком случае
Vlad
симфони сперли реализацию генерации кодов у фейсбука
The Ant
stupidkitty 😏
да там много где светилось, я не шифруюсь )
Vlad
https://github.com/hhvm/hsl/blob/80a42c02f036f72a42f0415e80d6b847f4bf62d5/src/random/private.php#L16
Vlad
ты можешь свой алфавит передать
Vlad
хоть из 2х, хоть из 10 символов
The Ant
Хз, имеет ли смысл тащить лишнюю зависимость, ради непонятной херни )
Vlad
можно спереть кусок кода
Юра
а чо нынче автоинкрементами вообще никто не пользуется чтоле?
Просто с ними беда при больших нагрузках и асинхронных всяких апишках
The Ant
рандом_инт вроде тоже позиционируется как мощный рандом, а нифига )