Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bom dia galera.
Estou com uma dúvida, digamos, interessante.
Pelo que eu sei, existem 3 formas de se trabalhar com MySQL no PHP: mysql, mysqli e PDO.
Atualmente eu uso uma classe de minha autoria que contem praticamente tudo, prevenção contra injects e etc. Ela trabalha com a extensão padrão do mysql, as chamadas mysql_*. Porém não tem alguns recursos interessantes, como a transferencia, commit, prepared statements, etc. Mas acaba que me atende bem, pois do jeito que eu construí a classe, ela funciona deste mesmo modo.
Dei uma olhada na classe nativa MySQLi, e sinceramente desanimei de trabalhar com ela. Achei ela muito diferente do jeito que eu estou acostumado a trabalhar, e muito confusa também. Sendo mais específico, não entendi o porque do store_result() e da utilização do bind_result ao invés do tradicional fetch(), pois desse modo eu posso passar uma variável e ela me retornaria um objeto único, mais fácil de se trabalhar. Mas ela tem todas as funcionalidades do MySQL 5, além de que ouvi dizer que ela também é mais rápida.
O PDO eu usei muito tempo, e sinceramente não tenho NADA a reclamar dele. Tem todas as funcionalidades do MySQL 5, a possibilidade de uma troca de SGDB mais fácil, entre outros. Porém, fui forçado a abandonar o PDO depois que ouvi relatos de que o PDO, quando usado num site com muitos acessos, se torna lento. Recentemente vi de perto um caso. Um site estava bastante lento, levando cerca de 2, 3 segundos só para carregar a página. Depois, foi criada uma classe parecida com a que eu uso agora, e o site deve uma grande melhora em desempenho. Bom, pelo menos, esta é a história que eu ouvi falar.
Bom, agora é o meu ponto: Qual seria mais indicado usar? Esta história de que o PDO é lento é verdade? Ou será que vale a pena eu abandonar meu método de trabalho e começar com MySQLi? Eu poderia também criar os prepared statements diretamente com uma query, e montar um jeito bom de trabalhar isso, e incluir na minha classe (apesar de que isso eu só faria em último caso).
E motivo deste questionamento, é que estou criando uma aplicação onde eu realmente vou precisar de commit, rollback e etc.
E então, o que vocês acham?
Carregando comentários...