php - instalar - ¿Cómo saber si MySQLnd es el driver activo?
mysqlnd install (5)
El controlador (libmysql o mysqlnd) se elige en tiempo de compilación, y cada uno de esos dos se puede especificar de forma independiente para mysql, mysqli y pdo_mysql.
Aquí están las tres opciones de configuración que corresponden a mysqlnd:
--with-mysql[=DIR] Include MySQL support. DIR is the MySQL base
directory. If mysqlnd is passed as DIR,
the MySQL native driver will be used [/usr/local]
--with-mysqli[=FILE] Include MySQLi support. FILE is the path
to mysql_config. If mysqlnd is passed as FILE,
the MySQL native driver will be used [mysql_config]
--with-pdo-mysql[=DIR] PDO: MySQL support. DIR is the MySQL base directoy
If mysqlnd is passed as DIR, the MySQL native
native driver will be used [/usr/local]
En su caso, la "versión de la API del cliente" es "mysqlnd 5.0.5-dev" para mysql, mysqli y pdo_mysql.
Así que parece que estás usando mysqlnd en cualquiera de los tres casos.
En el caso de PDO, tiene instalado el controlador MySQL, y ese se compila basado en mysqlnd.
Tal vez sea una pregunta obvia, pero quiero estar seguro.
¿Cómo puedo saber si MySQLnd es el controlador activo?
Estoy ejecutando PHP 5.3 y MySQL 5.1.37. En phpinfo () mysqlnd aparece en la lista pero solo con esto no puedo estar seguro de si uso MySQLnd o el controlador antiguo ...
Extracto de salida de phpinfo ()
mysql
MySQL Support enabled
Active Persistent Links 0
Active Links 0
Client API version mysqlnd 5.0.5-dev - 081106 - $Revision: 1.3.2.27 $
mysqli
MysqlI Support enabled
Client API library version mysqlnd 5.0.5-dev - 081106 - $Revision: 1.3.2.27 $
Active Persistent Links 0
Inactive Persistent Links 0
Active Links 26
mysqlnd
mysqlnd enabled
Version mysqlnd 5.0.5-dev - 081106 - $Revision: 1.3.2.27 $
PDO
PDO support enabled
PDO drivers mysql
pdo_mysql
PDO Driver for MySQL enabled
Client API version mysqlnd 5.0.5-dev - 081106 - $Revision: 1.3.2.27 $
Estoy usando PDO, y el controlador PDO dice mysql ...
Esto debería funcionar:
<?php
$mysqlnd = function_exists(''mysqli_fetch_all'');
if ($mysqlnd) {
echo ''mysqlnd enabled!'';
}
Para detectar si es el controlador PDO activo, cree su objeto MySQL PDO y luego:
if (strpos($pdo->getAttribute(PDO::ATTR_CLIENT_VERSION), ''mysqlnd'') !== false) {
echo ''PDO MySQLnd enabled!'';
}
Esto es lo que estaba buscando
<?php
if (extension_loaded(''mysqlnd'')) {
}
?>
La comprobación de mysqli_fetch_all no describe realmente si está utilizando mysqlnd . Más bien, dice que tienes habilitada la extensión mysqli .
MySQLi es simplemente una versión actualizada de la extensión mysql que se proporcionó en versiones anteriores de PHP.
La extensión
mysql, la extensiónmysqliy elPDO MySQL driverpueden configurarse individualmente para usar libmysqlclient o mysqlnd
Este codigo
<?php
$mysqlnd = function_exists(''mysqli_fetch_all'');
if ($mysqlnd) {
echo ''mysqlnd enabled!'';
}
no hacer eco de nada sugiere que no tiene mysqli compilado / habilitado / instalado, y podría estar usando la extensión de mysql anterior.
Una mejor manera de verificar mysqli con mysqlnd vs mysql con libmysqlclient es hacer esto:
<?php
if (function_exists(''mysql_connect'')) {
echo "- MySQL <b>is installed</b>.<br>";
} else {
echo "- MySQL <b>is not</b> installed.<br>";
}
if (function_exists(''mysqli_connect'')) {
echo "- MySQLi <b>is installed</b>.<br>";
} else {
echo "- MySQLi <b>is not installed</b>.<br>";
}
if (function_exists(''mysqli_get_client_stats'')) {
echo "- MySQLnd driver is being used.<br>";
} else {
echo "- libmysqlclient driver is being used.<br>";
}
Esto funciona porque mysqlnd proporciona tres funciones adicionales que funcionan solo cuando mysqlnd se usa como controlador .
Finalmente, la verificación de PDO debe tener la variable $pdo definida primero.
$dbHost = "localhost";
$dbUser = "root";
$dbPass = "password";
$dbName = "database";
$pdo = new PDO(''mysql:host=''.$dbHost.'';dbname=''.$dbName, $dbUser, $dbPass);
if (strpos($pdo->getAttribute(PDO::ATTR_CLIENT_VERSION), ''mysqlnd'') !== false) {
echo ''- PDO MySQLnd <b>is enabled</b>.<br>'';
} else {
echo ''- PDO MySQLnd <b>is not enabled</b>.<br>'';
}
?>
Tal vez comprobar si existen estos ajustes ? phpinfo () los reproduce de forma diferente a otras configuraciones ini por alguna razón. Trabaja para 5.4, no estoy seguro de 5.3.
ini_get(''mysqlnd.debug'') !== false