WordPress mysqli și PDO

6 feb. 2013, 02:08:06
Vizualizări: 23.5K
Voturi: 13

Baza de cod WordPress folosește mysqli sau PDO?

Știu că PDO este superior față de mysqli, dar nici mysqli nu este rău. Plus, una dintre caracteristicile care face PDO superior față de mysqli (faptul că este agnostic în ceea ce privește baza de date) nu înseamnă prea mult pentru WordPress, deoarece WordPress va folosi întotdeauna server mysql. Dar legarea parametrilor cu tipuri de date este ceva ce PDO suportă dar mysqli nu, și este un lucru bun.

Instinctul îmi spune că WordPress folosește mysqli, dar nu am putut să-l văd încă în baza de cod.

A doua mea întrebare este dacă WordPress folosește mysqli, este din cauza preocupărilor legate de viteză sau este pentru că în zilele de început (când WP era în dezvoltare), PDO nu exista încă?

0
Toate răspunsurile la întrebare 2
0
12

O actualizare pentru WordPress 3.9+ - odată cu deprecierea funcțiilor mysql_* în PHP 5.5, WordPress a început să utilizeze mysqli dacă acesta este disponibil pe server. Viitoarele dvs. plugin-uri și cod ar trebui să țină cont de acest lucru și să înceteze utilizarea funcțiilor mysql_*. În prezent, în versiunea 3.9, WordPress verifică disponibilitatea mysqli și îl utilizează dacă este disponibil. Dacă nu, folosește mysql_*, dar această verificare va fi eliminată cât mai curând posibil. Pe termen lung, se pare că vor folosi PDO, dar acesta este un proiect mai amplu.

Iată un FAQ și un anunț despre această schimbare:

http://make.wordpress.org/core/2014/04/07/mysql-in-wordpress-3-9/

2 mai 2014 23:31:13
7

WordPress folosește mysql_* funcțiile.

http://core.trac.wordpress.org/browser/tags/3.5.1/wp-includes/wp-db.php

Le-a folosit încă de când îmi amintesc, ceea ce probabil răspunde la ultima ta întrebare. Este ceea ce aș considera cod moștenit. Bănuiesc că va fi actualizat în curând (acele funcții au fost învechite doar începând cu PHP 5.5, cred). Nu știu în ce direcție va merge dezvoltarea.

Link către un tichet în Trac, cu amabilitatea lui Wyck (dintr-un comentariu de mai jos):

http://core.trac.wordpress.org/ticket/21663

6 feb. 2013 02:16:06
Comentarii

Am verificat codul din wp-db.php. Pe linia 1133, este funcția db_connect și conform acesteia, nu este nici măcar mysqli. Sunt confuz. Linia 1143 are clar acest lucru: $this->dbh = @mysql_connect( $this->dbhost, $this->dbuser, $this->dbpassword, $new_link, $client_flags ); și conform manualului PHP, (http://php.net/manual/en/function.mysql-connect.php), acesta este un cod mysql, nu mysqli. WP folosește într-adevăr mysql?

Average Joe Average Joe
6 feb. 2013 02:25:32

WordPress folosește funcții învechite, deoarece mysql_connect a fost oficial depreciat, wp se va muta sperăm la PDO în curând (curând înseamnă 1-2 ani). Ref: http://core.trac.wordpress.org/ticket/21663

Wyck Wyck
6 feb. 2013 02:44:30

@AverageJoe ... da, cum am spus, WordPress folosește funcții mysql. Ca și Wyck, sper la PDO, dar nu știu în ce direcție se va îndrepta.

s_ha_dum s_ha_dum
6 feb. 2013 03:01:04

Mulțumesc pentru link-ul de pe trac, Wyck. s_ha_dum, te rog să incluzi acest link ( http://core.trac.wordpress.org/ticket/21663 ) în răspunsul tău și să corectezi gramatica unde ai scris "If has used those ever since I can remember," când ai ocazia. Mulțumesc.

Average Joe Average Joe
6 feb. 2013 03:52:23

Un mic bump. Acest lucru a fost scris acum un an lumină.. Dar astăzi cred că avem mysqli_* în WordPress de câteva versiuni, nu-i așa?

K. Kilian Lindberg K. Kilian Lindberg
7 apr. 2014 15:29:00

Okay, am făcut o verificare a codului sursă în WordPress acum. Este vechiul mysql_*. Cineva știe care este viitorul clasei de bază de date în WordPress? Nu ar trebui să fie prea greu să includem o nouă opțiune mysqli_* și să păstrăm vechiul mysql* în fundal pentru orice eventualitate - poate ca un catch->if error cu noul mysqli->rulează vechea clasă db = plugin-urile etc. continuă să funcționeze

K. Kilian Lindberg K. Kilian Lindberg
7 apr. 2014 15:39:02

Asta îmi spune multe despre WP. lol

DevWL DevWL
6 ian. 2017 04:53:36
Arată celelalte 2 comentarii