©
本文档使用
php.cn手册 发布
(PECL mysqlnd-uh >= 1.0.0-alpha)
MysqlndUhConnection::setClientOption — Sets a client option
$connection
, int $option
, int $value
)Sets a client option.
connection
Mysqlnd connection handle. Do not modify!
option
The option to be set.
value
Optional option value, if required.
Returns TRUE
on success.
Otherwise, returns FALSE
Example #1 MysqlndUhConnection::setClientOption() example
<?php
function client_option_to_string ( $option ) {
static $mapping = array(
MYSQLND_UH_MYSQLND_OPTION_OPT_CONNECT_TIMEOUT => "MYSQLND_UH_MYSQLND_OPTION_OPT_CONNECT_TIMEOUT" ,
MYSQLND_UH_MYSQLND_OPTION_OPT_COMPRESS => "MYSQLND_UH_MYSQLND_OPTION_OPT_COMPRESS" ,
MYSQLND_UH_MYSQLND_OPTION_OPT_NAMED_PIPE => "MYSQLND_UH_MYSQLND_OPTION_OPT_NAMED_PIPE" ,
MYSQLND_UH_MYSQLND_OPTION_INIT_COMMAND => "MYSQLND_UH_MYSQLND_OPTION_INIT_COMMAND" ,
MYSQLND_UH_MYSQLND_READ_DEFAULT_FILE => "MYSQLND_UH_MYSQLND_READ_DEFAULT_FILE" ,
MYSQLND_UH_MYSQLND_READ_DEFAULT_GROUP => "MYSQLND_UH_MYSQLND_READ_DEFAULT_GROUP" ,
MYSQLND_UH_MYSQLND_SET_CHARSET_DIR => "MYSQLND_UH_MYSQLND_SET_CHARSET_DIR" ,
MYSQLND_UH_MYSQLND_SET_CHARSET_NAME => "MYSQLND_UH_MYSQLND_SET_CHARSET_NAME" ,
MYSQLND_UH_MYSQLND_OPT_LOCAL_INFILE => "MYSQLND_UH_MYSQLND_OPT_LOCAL_INFILE" ,
MYSQLND_UH_MYSQLND_OPT_PROTOCOL => "MYSQLND_UH_MYSQLND_OPT_PROTOCOL" ,
MYSQLND_UH_MYSQLND_SHARED_MEMORY_BASE_NAME => "MYSQLND_UH_MYSQLND_SHARED_MEMORY_BASE_NAME" ,
MYSQLND_UH_MYSQLND_OPT_READ_TIMEOUT => "MYSQLND_UH_MYSQLND_OPT_READ_TIMEOUT" ,
MYSQLND_UH_MYSQLND_OPT_WRITE_TIMEOUT => "MYSQLND_UH_MYSQLND_OPT_WRITE_TIMEOUT" ,
MYSQLND_UH_MYSQLND_OPT_USE_RESULT => "MYSQLND_UH_MYSQLND_OPT_USE_RESULT" ,
MYSQLND_UH_MYSQLND_OPT_USE_REMOTE_CONNECTION => "MYSQLND_UH_MYSQLND_OPT_USE_REMOTE_CONNECTION" ,
MYSQLND_UH_MYSQLND_OPT_USE_EMBEDDED_CONNECTION => "MYSQLND_UH_MYSQLND_OPT_USE_EMBEDDED_CONNECTION" ,
MYSQLND_UH_MYSQLND_OPT_GUESS_CONNECTION => "MYSQLND_UH_MYSQLND_OPT_GUESS_CONNECTION" ,
MYSQLND_UH_MYSQLND_SET_CLIENT_IP => "MYSQLND_UH_MYSQLND_SET_CLIENT_IP" ,
MYSQLND_UH_MYSQLND_SECURE_AUTH => "MYSQLND_UH_MYSQLND_SECURE_AUTH" ,
MYSQLND_UH_MYSQLND_REPORT_DATA_TRUNCATION => "MYSQLND_UH_MYSQLND_REPORT_DATA_TRUNCATION" ,
MYSQLND_UH_MYSQLND_OPT_RECONNECT => "MYSQLND_UH_MYSQLND_OPT_RECONNECT" ,
MYSQLND_UH_MYSQLND_OPT_SSL_VERIFY_SERVER_CERT => "MYSQLND_UH_MYSQLND_OPT_SSL_VERIFY_SERVER_CERT" ,
MYSQLND_UH_MYSQLND_OPT_NET_CMD_BUFFER_SIZE => "MYSQLND_UH_MYSQLND_OPT_NET_CMD_BUFFER_SIZE" ,
MYSQLND_UH_MYSQLND_OPT_NET_READ_BUFFER_SIZE => "MYSQLND_UH_MYSQLND_OPT_NET_READ_BUFFER_SIZE" ,
MYSQLND_UH_MYSQLND_OPT_SSL_KEY => "MYSQLND_UH_MYSQLND_OPT_SSL_KEY" ,
MYSQLND_UH_MYSQLND_OPT_SSL_CERT => "MYSQLND_UH_MYSQLND_OPT_SSL_CERT" ,
MYSQLND_UH_MYSQLND_OPT_SSL_CA => "MYSQLND_UH_MYSQLND_OPT_SSL_CA" ,
MYSQLND_UH_MYSQLND_OPT_SSL_CAPATH => "MYSQLND_UH_MYSQLND_OPT_SSL_CAPATH" ,
MYSQLND_UH_MYSQLND_OPT_SSL_CIPHER => "MYSQLND_UH_MYSQLND_OPT_SSL_CIPHER" ,
MYSQLND_UH_MYSQLND_OPT_SSL_PASSPHRASE => "MYSQLND_UH_MYSQLND_OPT_SSL_PASSPHRASE" ,
MYSQLND_UH_SERVER_OPTION_PLUGIN_DIR => "MYSQLND_UH_SERVER_OPTION_PLUGIN_DIR" ,
MYSQLND_UH_SERVER_OPTION_DEFAULT_AUTH => "MYSQLND_UH_SERVER_OPTION_DEFAULT_AUTH" ,
MYSQLND_UH_SERVER_OPTION_SET_CLIENT_IP => "MYSQLND_UH_SERVER_OPTION_SET_CLIENT_IP"
);
if ( version_compare ( PHP_VERSION , '5.3.99-dev' , '>' )) {
$mapping [ MYSQLND_UH_MYSQLND_OPT_MAX_ALLOWED_PACKET ] = "MYSQLND_UH_MYSQLND_OPT_MAX_ALLOWED_PACKET" ;
$mapping [ MYSQLND_UH_MYSQLND_OPT_AUTH_PROTOCOL ] = "MYSQLND_UH_MYSQLND_OPT_AUTH_PROTOCOL" ;
}
if ( defined ( "MYSQLND_UH_MYSQLND_OPT_INT_AND_FLOAT_NATIVE" )) {
$mapping [ "MYSQLND_UH_MYSQLND_OPT_INT_AND_FLOAT_NATIVE" ] = "MYSQLND_UH_MYSQLND_OPT_INT_AND_FLOAT_NATIVE" ;
}
return (isset( $mapping [ $option ])) ? $mapping [ $option ] : 'unknown' ;
}
class proxy extends MysqlndUhConnection {
public function setClientOption ( $res , $option , $value ) {
printf ( "%s(%s)\n" , __METHOD__ , var_export ( func_get_args (), true ));
printf ( "Option '%s' set to %s\n" , client_option_to_string ( $option ), var_export ( $value , true ));
$ret = parent :: setClientOption ( $res , $option , $value );
printf ( "%s returns %s\n" , __METHOD__ , var_export ( $ret , true ));
return $ret ;
}
}
mysqlnd_uh_set_connection_proxy (new proxy ());
$mysqli = new mysqli ( "localhost" , "root" , "" , "test" );
?>
以上例程会输出:
proxy::setClientOption(array ( 0 => NULL, 1 => 210, 2 => 3221225472, )) Option 'MYSQLND_UH_MYSQLND_OPT_MAX_ALLOWED_PACKET' set to 3221225472 proxy::setClientOption returns true proxy::setClientOption(array ( 0 => NULL, 1 => 211, 2 => 'mysql_native_password', )) Option 'MYSQLND_UH_MYSQLND_OPT_AUTH_PROTOCOL' set to 'mysql_native_password' proxy::setClientOption returns true proxy::setClientOption(array ( 0 => NULL, 1 => 8, 2 => 1, )) Option 'MYSQLND_UH_MYSQLND_OPT_LOCAL_INFILE' set to 1 proxy::setClientOption returns true