文字

MysqlndUhConnection::simpleCommand

(PECL mysqlnd-uh >= 1.0.0-alpha)

MysqlndUhConnection::simpleCommandSends a basic COM_* command

说明

public bool MysqlndUhConnection::simpleCommand ( mysqlnd_connection $connection , int $command , string $arg , int $ok_packet , bool $silent , bool $ignore_upsert_status )

Sends a basic COM_* command to MySQL.

参数

connection

Mysqlnd connection handle. Do not modify!

command

The COM command to be send.

arg

Optional COM command arguments.

ok_packet

The OK packet type.

silent

Whether mysqlnd may emit errors.

ignore_upsert_status

Whether to ignore UPDATE/INSERT status.

返回值

Returns TRUE on success. Otherwise, returns FALSE

范例

Example #1 MysqlndUhConnection::simpleCommand() example

<?php
function  server_cmd_2_string ( $command ) {
 
$mapping  = array(
  
MYSQLND_UH_MYSQLND_COM_SLEEP  =>  "MYSQLND_UH_MYSQLND_COM_SLEEP" ,
  
MYSQLND_UH_MYSQLND_COM_QUIT  =>  "MYSQLND_UH_MYSQLND_COM_QUIT" ,
  
MYSQLND_UH_MYSQLND_COM_INIT_DB  =>  "MYSQLND_UH_MYSQLND_COM_INIT_DB" ,
  
MYSQLND_UH_MYSQLND_COM_QUERY  =>  "MYSQLND_UH_MYSQLND_COM_QUERY" ,
  
MYSQLND_UH_MYSQLND_COM_FIELD_LIST  =>  "MYSQLND_UH_MYSQLND_COM_FIELD_LIST" ,
  
MYSQLND_UH_MYSQLND_COM_CREATE_DB  =>  "MYSQLND_UH_MYSQLND_COM_CREATE_DB" ,
  
MYSQLND_UH_MYSQLND_COM_DROP_DB  =>  "MYSQLND_UH_MYSQLND_COM_DROP_DB" ,
  
MYSQLND_UH_MYSQLND_COM_REFRESH  =>  "MYSQLND_UH_MYSQLND_COM_REFRESH" ,
  
MYSQLND_UH_MYSQLND_COM_SHUTDOWN  =>  "MYSQLND_UH_MYSQLND_COM_SHUTDOWN" ,
  
MYSQLND_UH_MYSQLND_COM_STATISTICS  =>  "MYSQLND_UH_MYSQLND_COM_STATISTICS" ,
  
MYSQLND_UH_MYSQLND_COM_PROCESS_INFO  =>  "MYSQLND_UH_MYSQLND_COM_PROCESS_INFO" ,
  
MYSQLND_UH_MYSQLND_COM_CONNECT  =>  "MYSQLND_UH_MYSQLND_COM_CONNECT" ,
  
MYSQLND_UH_MYSQLND_COM_PROCESS_KILL  =>  "MYSQLND_UH_MYSQLND_COM_PROCESS_KILL" ,
  
MYSQLND_UH_MYSQLND_COM_DEBUG  =>  "MYSQLND_UH_MYSQLND_COM_DEBUG" ,
  
MYSQLND_UH_MYSQLND_COM_PING  =>  "MYSQLND_UH_MYSQLND_COM_PING" ,
  
MYSQLND_UH_MYSQLND_COM_TIME  =>  "MYSQLND_UH_MYSQLND_COM_TIME" ,
  
MYSQLND_UH_MYSQLND_COM_DELAYED_INSERT  =>  "MYSQLND_UH_MYSQLND_COM_DELAYED_INSERT" ,
  
MYSQLND_UH_MYSQLND_COM_CHANGE_USER  =>  "MYSQLND_UH_MYSQLND_COM_CHANGE_USER" ,
  
MYSQLND_UH_MYSQLND_COM_BINLOG_DUMP  =>  "MYSQLND_UH_MYSQLND_COM_BINLOG_DUMP" ,
  
MYSQLND_UH_MYSQLND_COM_TABLE_DUMP  =>  "MYSQLND_UH_MYSQLND_COM_TABLE_DUMP" ,
  
MYSQLND_UH_MYSQLND_COM_CONNECT_OUT  =>  "MYSQLND_UH_MYSQLND_COM_CONNECT_OUT" ,
  
MYSQLND_UH_MYSQLND_COM_REGISTER_SLAVED  =>  "MYSQLND_UH_MYSQLND_COM_REGISTER_SLAVED" ,
  
MYSQLND_UH_MYSQLND_COM_STMT_PREPARE  =>  "MYSQLND_UH_MYSQLND_COM_STMT_PREPARE" ,
  
MYSQLND_UH_MYSQLND_COM_STMT_EXECUTE  =>  "MYSQLND_UH_MYSQLND_COM_STMT_EXECUTE" ,
  
MYSQLND_UH_MYSQLND_COM_STMT_SEND_LONG_DATA  =>  "MYSQLND_UH_MYSQLND_COM_STMT_SEND_LONG_DATA" ,
  
MYSQLND_UH_MYSQLND_COM_STMT_CLOSE  =>  "MYSQLND_UH_MYSQLND_COM_STMT_CLOSE" ,
  
MYSQLND_UH_MYSQLND_COM_STMT_RESET  =>  "MYSQLND_UH_MYSQLND_COM_STMT_RESET" ,
  
MYSQLND_UH_MYSQLND_COM_SET_OPTION  =>  "MYSQLND_UH_MYSQLND_COM_SET_OPTION" ,
  
MYSQLND_UH_MYSQLND_COM_STMT_FETCH  =>  "MYSQLND_UH_MYSQLND_COM_STMT_FETCH" ,
  
MYSQLND_UH_MYSQLND_COM_DAEMON  =>  "MYSQLND_UH_MYSQLND_COM_DAEMON" ,
  
MYSQLND_UH_MYSQLND_COM_END  =>  "MYSQLND_UH_MYSQLND_COM_END" ,
 );
 return (isset(
$mapping [ $command ])) ?  $mapping [ $command ] :  'unknown' ;
}

function 
ok_packet_2_string ( $ok_packet ) {
 
$mapping  = array(
  
MYSQLND_UH_MYSQLND_PROT_GREET_PACKET  =>  "MYSQLND_UH_MYSQLND_PROT_GREET_PACKET" ,
  
MYSQLND_UH_MYSQLND_PROT_AUTH_PACKET  =>  "MYSQLND_UH_MYSQLND_PROT_AUTH_PACKET" ,
  
MYSQLND_UH_MYSQLND_PROT_OK_PACKET  =>  "MYSQLND_UH_MYSQLND_PROT_OK_PACKET" ,
  
MYSQLND_UH_MYSQLND_PROT_EOF_PACKET  =>  "MYSQLND_UH_MYSQLND_PROT_EOF_PACKET" ,
  
MYSQLND_UH_MYSQLND_PROT_CMD_PACKET  =>  "MYSQLND_UH_MYSQLND_PROT_CMD_PACKET" ,
  
MYSQLND_UH_MYSQLND_PROT_RSET_HEADER_PACKET  =>  "MYSQLND_UH_MYSQLND_PROT_RSET_HEADER_PACKET" ,
  
MYSQLND_UH_MYSQLND_PROT_RSET_FLD_PACKET  =>  "MYSQLND_UH_MYSQLND_PROT_RSET_FLD_PACKET" ,
  
MYSQLND_UH_MYSQLND_PROT_ROW_PACKET  =>  "MYSQLND_UH_MYSQLND_PROT_ROW_PACKET" ,
  
MYSQLND_UH_MYSQLND_PROT_STATS_PACKET  =>  "MYSQLND_UH_MYSQLND_PROT_STATS_PACKET" ,
  
MYSQLND_UH_MYSQLND_PREPARE_RESP_PACKET  =>  "MYSQLND_UH_MYSQLND_PREPARE_RESP_PACKET" ,
  
MYSQLND_UH_MYSQLND_CHG_USER_RESP_PACKET  =>  "MYSQLND_UH_MYSQLND_CHG_USER_RESP_PACKET" ,
  
MYSQLND_UH_MYSQLND_PROT_LAST  =>  "MYSQLND_UH_MYSQLND_PROT_LAST" ,
 );
 return (isset(
$mapping [ $ok_packet ])) ?  $mapping [ $ok_packet ] :  'unknown' ;
}

class 
proxy  extends  MysqlndUhConnection  {
 public function 
simpleCommand ( $conn $command $arg $ok_packet $silent $ignore_upsert_status ) {
  
printf ( "%s(%s)\n" __METHOD__ var_export ( func_get_args (),  true ));
  
printf ( "Command '%s'\n" server_cmd_2_string ( $command ));
  
printf ( "OK packet '%s'\n" ,   ok_packet_2_string ( $ok_packet ));
  
$ret  parent :: simpleCommand ( $conn $command $arg $ok_packet $silent $ignore_upsert_status );
  
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" );
$mysqli -> query ( "SELECT 1" );
?>

以上例程会输出:

proxy::simpleCommand(array (
  0 => NULL,
  1 => 3,
  2 => 'SELECT 1',
  3 => 13,
  4 => false,
  5 => false,
))
Command 'MYSQLND_UH_MYSQLND_COM_QUERY'
OK packet 'MYSQLND_UH_MYSQLND_PROT_LAST'
proxy::simpleCommand returns true
:)proxy::simpleCommand(array (
  0 => NULL,
  1 => 1,
  2 => '',
  3 => 13,
  4 => true,
  5 => true,
))
Command 'MYSQLND_UH_MYSQLND_COM_QUIT'
OK packet 'MYSQLND_UH_MYSQLND_PROT_LAST'
proxy::simpleCommand returns true

参见

  • mysqlnd_uh_set_connection_proxy() - Installs a proxy for mysqlnd connections
上一篇: 下一篇: