WordPress mysqli и PDO

6 февр. 2013 г., 02:08:06
Просмотры: 23.5K
Голосов: 13

Какой драйвер использует кодовая база WordPress - mysqli или PDO?

Я знаю, что PDO превосходит mysqli, хотя mysqli тоже неплох. При этом одно из преимуществ PDO перед mysqli (независимость от типа базы данных) не имеет большого значения для WordPress, так как WordPress всегда использует MySQL сервер. Но привязка параметров с типами данных, которую поддерживает PDO, но не поддерживает mysqli - это действительно полезная функция.

Моя интуиция подсказывает, что WordPress использует mysqli, хотя я пока не нашел этому подтверждения в кодовой базе.

Мой второй вопрос: если WordPress использует mysqli, это связано с соображениями производительности или это потому, что в ранние дни (когда разрабатывался WP) PDO еще просто не существовал?

0
Все ответы на вопрос 2
0
12

Обновление для WordPress 3.9+ — с тем, что PHP 5.5 объявил функции mysql_* устаревшими, WordPress начал использовать mysqli, если он доступен на сервере. Ваши будущие плагины и код должны учитывать это и перестать использовать mysql_*. В настоящее время, в версии 3.9, WordPress проверяет доступность mysqli и использует его, если он есть. Если нет — использует mysql_*, но эта проверка будет удалена при первой возможности. В будущем, похоже, будет использоваться PDO, но это более масштабный проект.

Вот часто задаваемые вопросы и анонс по этой теме:

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

2 мая 2014 г. 23:31:13
7

WordPress использует mysql_* функции.

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

Он использует их с тех пор, как я себя помню, что, вероятно, отвечает на ваш последний вопрос. Это то, что я бы назвал устаревшим кодом. Полагаю, что он будет обновлён в ближайшее время (эти функции были объявлены устаревшими только в PHP 5.5, если я не ошибаюсь). Я не знаю, каким путём пойдёт разработка.

Ссылка на тикет в Trac, предоставленная Wyck (из комментария ниже):

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

6 февр. 2013 г. 02:16:06
Комментарии

Я проверил код в файле wp-db.php. На строке 1133 находится функция db_connect, и согласно ей, это даже не mysqli. Я в замешательстве. Строка 1143 явно содержит это: $this->dbh = @mysql_connect( $this->dbhost, $this->dbuser, $this->dbpassword, $new_link, $client_flags ); и согласно руководству PHP ( http://php.net/manual/en/function.mysql-connect.php ), это код mysql, а не mysqli. Неужели WP действительно использует mysql?

Average Joe Average Joe
6 февр. 2013 г. 02:25:32

WordPress использует устаревшие функции, поскольку mysql_connect официально объявлен устаревшим. Надеюсь, WP вскоре перейдёт на PDO ("вскоре" означает 1-2 года). Ссылка: http://core.trac.wordpress.org/ticket/21663

Wyck Wyck
6 февр. 2013 г. 02:44:30

@AverageJoe ... да, как я и сказал, WordPress использует функции mysql. Как и Wyck, я надеюсь на переход к PDO, но не знаю, как всё сложится.

s_ha_dum s_ha_dum
6 февр. 2013 г. 03:01:04

Спасибо за ссылку на трек, Wyck. s_ha_dum, пожалуйста, добавь эту ссылку (http://core.trac.wordpress.org/ticket/21663) в свой ответ и исправь грамматику в фразе "If has used those ever since I can remember," когда будет возможность. Спасибо.

Average Joe Average Joe
6 февр. 2013 г. 03:52:23

Небольшой бамп. Это было написано целый световой год назад... Но сегодня, я полагаю, в WordPress уже несколько версий используется mysqli_*, верно?

K. Kilian Lindberg K. Kilian Lindberg
7 апр. 2014 г. 15:29:00

Ладно, проверил исходный код WordPress сейчас. Там по-прежнему старый mysql*. Кто-нибудь знает будущее класса базы данных в WordPress? Не должно быть слишком сложно добавить новую альтернативу mysqli* и оставить старый добрый mysql* на заднем плане на всякий случай — возможно, как catch->if error с новым mysqli->запустить старый класс db = плагины и т.д. продолжают работать.

K. Kilian Lindberg K. Kilian Lindberg
7 апр. 2014 г. 15:39:02

Это многое говорит мне о WP. лол

DevWL DevWL
6 янв. 2017 г. 04:53:36
Показать остальные 2 комментариев