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ónmysqli
y elPDO MySQL driver
pueden 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