Re: [sugbp] Doctrine általában és egy PHP bug

From: Adam P.
Sent on: Wednesday, March 6, 2013 2:03 AM
Hali!

@Chris, kár hogy nem jó a csütörtök, már valaki más is mondta, hogy neki sem jó. Igyekszünk a legközelebbit máskorra rakni. :)

Most szó lesz jópár érdekességről doctrine területen, bár nem kifejezetten bugokról, inkább lassító tényezőkről.

Az spl_object_hash-el régebben volt egy olyan probléma, hogy az UOW nem pucolta ki a már fölös entityket, de ez már elég régen volt.

A saját típus probléma érdekes, legújabb doctrinennal megy. Igazából nem tudom miért ne menne, mert a hydrator közös, és már az abstract feldolgozza a típusokat.
Azt még el tudom képzelni, hogy a convertToDatabaseValue nem megy ha nem kap a $qb->setParamter típust (3. paraméter), mert akkor a Doctrine\ORM\Query\ParameterTypeInferer::inferType veszi kezelésbe, ami nem egy túl bonyolult függvény :)

Ádám

2013.03.06. 0:10 keltezéssel, Ferenczi Krisztián írta:
Sziasztok!

Nem tudom, hogy ki és hogyan van vele, de a Doctrine 2-vel folyamatos szívás van, egyszerűen agyrém. Le nem dokumentált funkciók, nem várt működések, vagy éppen ledokumentált funkciók, félig megírva. Most az egyik fixtures generálásnál futottam bele abba a hibába, hogy 100 entity generálása közben 1-5 db-ot teljesen véletlen szerűen kihagyott! Létrejött az objektum, de az adatbázisba nem került bele, és a prePersist sem hívódott meg hozzájuk. De tényleg, teljesen összefüggéstelen volt, hogy mikor nem írja bele az adatbázisba. Egy közel 7 órás debugolás után derült ki, hogy a php spl_object_hash() fv-e, az ígért funkciójával ellentétben, egyáltalán nem generál egyedi hash-eket! Sajnos ütközés lépett fel, és két különböző objektumnak ugyanazt a hash-t sikerült generálnia, a doctrine pedig ez alapján "jegyzi meg", hogy mely objektumokat mentette már, ha pedig mentette, akkor nyilván nem menti megint. És mivel azt hitte, hogy egy korábban már mentett objektumot kapott megint, ezért elegánsan figyelmen kívül hagyta, hogy azzal bármit is kezdenie kellene.

Úgyhogy ha "nagy mennyiségű" random adatot akartok beírni, egyszerre, akkor érdemes számolni vele, hogy néha vagy működik vagy nem.

Ja, és a saját oszlop típusokkal érdemes vigyázni, mert ELMÉLETILEG, a dokumentumban benne van, hogy ilyet lehet létrehozni, és simán lehet konvertálgatni a mysql-nek oda-vissza az adatokat - convertToPHPValue() és convertToDatabaseValue() fv -, ez a funkció a valóságban csak félig van megírva, ha DQL-ben vagy QueryBuilderben akarod használni az adott oszlopot, egyszerűen nem hívja meg a konvertálót. Elegánsan kihagyták innen ezt a részt, mint akinek soha nincs is szüksége ilyesmire, én meg megint fogtam a fejem, hogy find()-dal működik, querybuilder-ben pedig nem, amikor minden meg van írva és jól van megírva. Aztán végig követve a doctrine forrását, kiderült, ezért.

Más.

Nekem a csütörtökök, azok néha nem jók, mert más programom van. Csak a csütörtök. Ezeket általában jó előre tudom: 03.07, 03.21, 04.04, 04.18, 05.02, 05.16, 05.30, 06.13. Tehát pontosan 2 hetenként követik egymást. Kérhetném, hogy a következő alkalom majd egy számomra is szabad időpontban legyen? :) Már persze ha másnak éppen nem az üti a teendőit.

Chris




--
Please Note: If you hit "REPLY", your message will be sent to everyone on this mailing list ([address removed])
This message was sent by Ferenczi Krisztián ([address removed]) from Symfony User Group Budapest.
To learn more about Ferenczi Krisztián, visit his/her member profile
Set my mailing list to email me As they are sent | In one daily email | Don't send me mailing list messages

Meetup, POB 4668 #37895 NY NY USA 10163 | [address removed]

People in this
Meetup are also in:

Sign up

Meetup members, Log in

By clicking "Sign up" or "Sign up using Facebook", you confirm that you accept our Terms of Service & Privacy Policy