2014-04-26 13 views
5

Skopiowałem niezmodyfikowany (myślę) kod do połączenia z bazą danych Yii z aplikacji ręcznej/demo/cokolwiek. I, jeśli się nie mylę, domyślnie jest ustawiony na 'emulatePrepare'=>TRUE.Aby użyć "emulatePrepare" w Yii, czy nie?

Potem znalazłem this i this odpowiedzi i wiele więcej źródeł, które zdaje się twierdzić, że użyciu Emulate przygotowuje to zły pomysł. Jest to relikt ze starych wersji RDBMS (szczególnie MySQL w moim przypadku) i nie powinien być używany w nowoczesnych wersjach MySQL/PHP.

Czy ktoś może to potwierdzić? Czy powinniśmy mieć 'emulatePrepare'=>FALSE w naszych aplikacjach Yii?

Odpowiedz

5

Obie odpowiedzi, do których nawiązałeś, są zupełnie bezcelowe i subiektywne. Nie można podać konkretnego powodu, dla którego należy unikać trybu emulacji. Nic dziwnego, ponieważ nie ma ani jednego.

Istnieją tylko dwa prawdziwe przypadki żywo znane mi co naprawdę wpływa na wrażenia z PDO

  • gdy emulacja jest włączony na, to nie można użyć parametru przechodzącą w execute() na rachunku limitu.
  • Po wyłączeniu emulacji z, nie można użyć dość przydatnej funkcji używania więcej niż jednego nazwanego symbolu zastępczego o tej samej nazwie.

Ostateczna decyzja należy do ciebie, ale nie nazwałbym żadnej sprawy zbyt krytyczną.

+0

Dziękuję. Tak więc, z twojej odpowiedzi wynika, że ​​twierdzenia takie jak "_emulate prepare było dobre dla starych wersji RDBM, ale dla współczesnych jest po prostu wolniejsze" (co najmniej kilka z nich), powinniśmy traktować jak blah-bla, dobrze? – trejder

+0

Ten konkretny jest raczej nie prawdziwy. Jak to (prawidłowo) zauważyłem w drugiej odpowiedzi, jest całkiem odwrotnie - "natywne przygotowane instrukcje mogą być nieco wolniejsze niż wydawanie zwykłego zapytania tekstowego za pomocą emulowanych przygotowanych instrukcji." ' –

+0

Plus: istnieje [ta odpowiedź] (http: //stackoverflow.com/a/8776392/1469208): "_'EMULATE_PREPARES = true" wydaje się teraz być domyślnym ustawieniem dla sterownika pdp_mysql. Od tego momentu rzecz (cache) zapytania została naprawiona/zmieniona (...) _ ". Dzięki jeszcze raz! – trejder