⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mysqli_get_client_stats.phpt

📁 linux下安装不上mysql5与php5的可用此关联
💻 PHPT
📖 第 1 页 / 共 2 页
字号:
--TEST--mysqli_get_client_stats()--SKIPIF--<?php require_once('skipif.inc'); ?><?php require_once('skipifemb.inc'); ?><?PHPif (!function_exists('mysqli_get_client_stats')) {    die("skip only available with mysqlnd");}?>--FILE--<?php            /*    TODO    no_index_used    bad_index_used    flushed_normal_sets    flushed_ps_sets      explicit_close    implicit_close    disconnect_close    in_middle_of_command_close    explicit_free_result    implicit_free_result    explicit_stmt_close    implicit_stmt_close    */        function mysqli_get_client_stats_assert_eq($field, $current, $expected, &$test_counter, $desc = "") {                        $test_counter++;        if (is_array($current) && is_array($expected)) {            if ($current[$field] !== $expected[$field]) {                printf("[%03d] %s Expecting %s = %s/%s, got %s/%s\n",                    $test_counter, $desc,                    $field, $expected[$field], gettype($expected[$field]),                     $current[$field], gettype($current[$field]));            }        } else if (is_array($current)) {            if ($current[$field] !== $expected) {                printf("[%03d] %s Expecting %s = %s/%s, got %s/%s\n",                    $test_counter, $desc,                    $field, $expected, gettype($expected),                     $current[$field], gettype($current[$field]));            }        } else {            if ($current !== $expected) {                printf("[%03d] %s Expecting %s = %s/%s, got %s/%s\n",                    $test_counter, $desc,                     $field, $expected, gettype($expected),                    $current, gettype($current));            }        }            }        function mysqli_get_client_stats_assert_gt($field, $current, $expected, &$test_counter, $desc = "") {                        $test_counter++;        if (is_array($current) && is_array($expected)) {            if ($current[$field] <= $expected[$field]) {                printf("[%03d] %s Expecting %s = %s/%s, got %s/%s\n",                    $test_counter, $desc,                    $field, $expected[$field], gettype($expected[$field]),                     $current[$field], gettype($current[$field]));            }        } else {            if ($current <= $expected) {                printf("[%03d] %s Expecting %s = %s/%s, got %s/%s\n",                    $test_counter, $desc, $field,                    $expected, gettype($expected),                    $current, gettype($current));            }        }            }            $tmp = $link = null;    if (!is_null($tmp = @mysqli_get_client_stats($link)))        printf("[001] Expecting NULL, got %s/%s\n", gettype($tmp), $tmp);           include "connect.inc";                if (!is_array($info = mysqli_get_client_stats()) || empty($info))        printf("[002] Expecting array/any_non_empty, got %s/%s\n", gettype($info), $info);    var_dump($info);               if (!$link = mysqli_connect($host, $user, $passwd, $db, $port, $socket)) {        printf("[003] Cannot connect to the server using host=%s, user=%s, passwd=***, dbname=%s, port=%s, socket=%s\n",        $host, $user, $db, $port, $socket);        exit(1);    }           if (!is_array($new_info = mysqli_get_client_stats()) || empty($new_info))        printf("[004] Expecting array/any_non_empty, got %s/%s\n", gettype($new_info), $new_info);            if (count($info) != count($new_info)) {        printf("[005] Expecting the same number of entries in the arrays\n");        var_dump($info);        var_dump($new_info);    }        $test_counter = 6;    mysqli_get_client_stats_assert_gt('bytes_sent', $new_info, $info, $test_counter);    mysqli_get_client_stats_assert_gt('bytes_received', $new_info, $info, $test_counter);    mysqli_get_client_stats_assert_gt('packets_sent', $new_info, $info, $test_counter);    mysqli_get_client_stats_assert_gt('packets_received', $new_info, $info, $test_counter);    mysqli_get_client_stats_assert_gt('protocol_overhead_in', $new_info, $info, $test_counter);    mysqli_get_client_stats_assert_gt('protocol_overhead_out', $new_info, $info, $test_counter);        // we assume the above as tested and in the following we check only those    mysqli_get_client_stats_assert_eq('result_set_queries', $new_info, $info, $test_counter);		/* we need to skip this test in unicode - we send set names utf8 during mysql_connect */	if (!ini_get("unicode.semantics"))	    mysqli_get_client_stats_assert_eq('non_result_set_queries', $new_info, $info, $test_counter);    mysqli_get_client_stats_assert_eq('buffered_sets', $new_info, $info, $test_counter);    mysqli_get_client_stats_assert_eq('unbuffered_sets', $new_info, $info, $test_counter);    mysqli_get_client_stats_assert_eq('ps_buffered_sets', $new_info, $info, $test_counter);    mysqli_get_client_stats_assert_eq('ps_unbuffered_sets', $new_info, $info, $test_counter);    mysqli_get_client_stats_assert_eq('rows_fetched_from_server', $new_info, $info, $test_counter);    mysqli_get_client_stats_assert_eq('rows_fetched_from_client', $new_info, $info, $test_counter);    mysqli_get_client_stats_assert_eq('rows_skipped', $new_info, $info, $test_counter);    mysqli_get_client_stats_assert_eq('copy_on_write_saved', $new_info, $info, $test_counter);    mysqli_get_client_stats_assert_eq('copy_on_write_performed', $new_info, $info, $test_counter);    mysqli_get_client_stats_assert_eq('command_buffer_too_small', $new_info, $info, $test_counter);    // This is not a mistake that I use string(1) "1" here! Andrey did not go for int to avoid any    // issues for very large numbers and 32 vs. 64bit systems    mysqli_get_client_stats_assert_eq('connect_success', $new_info, "1", $test_counter);    mysqli_get_client_stats_assert_eq('connect_failure', $new_info, $info, $test_counter);    mysqli_get_client_stats_assert_eq('connection_reused', $new_info, $info, $test_counter);        require('table.inc');        if (!is_array($info = mysqli_get_client_stats()) || empty($info))        printf("[%03d] Expecting array/any_non_empty, got %s/%s\n",             ++$test_counter, gettype($info), $info);        //    // result_set_queries statistics    //        if (!$res = mysqli_query($link, "SELECT id, label FROM test"))         printf("[%03d] SELECT failed, [%d] %s\n", ++$test_counter,             mysqli_errno($link), mysqli_error($link));    $rows = 0;    while ($row = mysqli_fetch_assoc($res))        $rows++;        if (0 == $rows)         printf("[%03d] Expecting at least one result, [%d] %s\n", ++$test_counter,             mysqli_errno($link), mysqli_error($link));                mysqli_free_result($res);        if (!is_array($new_info = mysqli_get_client_stats()) || empty($new_info))        printf("[%03d] Expecting array/any_non_empty, got %s/%s\n",             ++$test_counter, gettype($new_info), $new_info);            mysqli_get_client_stats_assert_eq('result_set_queries', $new_info, (string)($info['result_set_queries'] + 1), $test_counter);    $info = $new_info;        //    // non_result_set_queries - DDL    //            // CREATE TABLE, DROP TABLE           if (!mysqli_query($link, "DROP TABLE IF EXISTS non_result_set_queries_test"))        printf("[%03d] DROP TABLE failed, [%d] %s\n", ++$test_counter,             mysqli_errno($link), mysqli_error($link));        if (!mysqli_query($link, "CREATE TABLE non_result_set_queries_test(id INT) ENGINE = " . $engine)) {        printf("[%03d] CREATE TABLE failed, [%d] %s\n", ++$test_counter,             mysqli_errno($link), mysqli_error($link));    } else {            if (!is_array($new_info = mysqli_get_client_stats()) || empty($new_info))            printf("[%03d] Expecting array/any_non_empty, got %s/%s\n",                 ++$test_counter, gettype($new_info), $new_info);        mysqli_get_client_stats_assert_eq('non_result_set_queries', $new_info, (string)($info['non_result_set_queries'] + 2), $test_counter, 'CREATE/DROP TABLE');            }    $info = $new_info;        // ALERT TABLE    if (!mysqli_query($link, "ALTER TABLE non_result_set_queries_test ADD label CHAR(1)")) {        printf("[%03d] ALTER TABLE failed, [%d] %s\n", ++$test_counter,             mysqli_errno($link), mysqli_error($link));    } else {        if (!is_array($new_info = mysqli_get_client_stats()) || empty($new_info))            printf("[%03d] Expecting array/any_non_empty, got %s/%s\n",                 ++$test_counter, gettype($new_info), $new_info);        mysqli_get_client_stats_assert_eq('non_result_set_queries', $new_info, (string)($info['non_result_set_queries'] + 1), $test_counter, 'ALTER TABLE');            }    $info = $new_info;        // CREATE INDEX, DROP INDEX    if (!mysqli_query($link, "CREATE INDEX idx_1 ON non_result_set_queries_test(id)")) {        printf("[%03d] CREATE INDEX failed, [%d] %s\n", ++$test_counter,             mysqli_errno($link), mysqli_error($link));    } else {                    if (!mysqli_query($link, "DROP INDEX idx_1 ON non_result_set_queries_test"))            printf("[%03d] DROP INDEX failed, [%d] %s\n", ++$test_counter,                 mysqli_errno($link), mysqli_error($link));                if (!is_array($new_info = mysqli_get_client_stats()) || empty($new_info))            printf("[%03d] Expecting array/any_non_empty, got %s/%s\n",                 ++$test_counter, gettype($new_info), $new_info);        mysqli_get_client_stats_assert_eq('non_result_set_queries', $new_info, (string)($info['non_result_set_queries'] + 2), $test_counter, 'DROP INDEX');         }    $info = $new_info;        // RENAME TABLE        if (!mysqli_query($link, "DROP TABLE IF EXISTS client_stats_test"))        printf("[%03d] Cleanup, DROP TABLE client_stats_test failed, [%d] %s\n", ++$test_counter,             mysqli_errno($link), mysqli_error($link));                if (!is_array($new_info = mysqli_get_client_stats()) || empty($new_info))            printf("[%03d] Expecting array/any_non_empty, got %s/%s\n",                 ++$test_counter, gettype($new_info), $new_info);                $info = $new_info;                       if (!mysqli_query($link, "RENAME TABLE non_result_set_queries_test TO client_stats_test")) {        printf("[%03d] RENAME TABLE failed, [%d] %s\n", ++$test_counter,             mysqli_errno($link), mysqli_error($link));                      } else {                            if (!is_array($new_info = mysqli_get_client_stats()) || empty($new_info))            printf("[%03d] Expecting array/any_non_empty, got %s/%s\n",                 ++$test_counter, gettype($new_info), $new_info);        mysqli_get_client_stats_assert_eq('non_result_set_queries', $new_info, (string)($info['non_result_set_queries'] + 1), $test_counter, 'RENAME TABLE');                        }        $info = $new_info;        if (!mysqli_query($link, "DROP TABLE IF EXISTS non_result_set_queries_test"))        printf("[%03d] Cleanup, DROP TABLE failed, [%d] %s\n", ++$test_counter,             mysqli_errno($link), mysqli_error($link));    if (!mysqli_query($link, "DROP TABLE IF EXISTS client_stats_test"))        printf("[%03d] Cleanup, DROP TABLE failed, [%d] %s\n", ++$test_counter,             mysqli_errno($link), mysqli_error($link));                // Let's see if we have privileges for CREATE DATABASE    mysqli_query($link, "DROP DATABASE IF EXISTS mysqli_get_client_stats");    if (!is_array($new_info = mysqli_get_client_stats()) || empty($new_info))            printf("[%03d] Expecting array/any_non_empty, got %s/%s\n",                 ++$test_counter, gettype($new_info), $new_info);                $info = $new_info;              // CREATE, ALTER, RENAME, DROP DATABASE    if (mysqli_query($link, "CREATE DATABASE mysqli_get_client_stats")) {                if (!is_array($new_info = mysqli_get_client_stats()) || empty($new_info))            printf("[%03d] Expecting array/any_non_empty, got %s/%s\n",                 ++$test_counter, gettype($new_info), $new_info);        mysqli_get_client_stats_assert_eq('non_result_set_queries', $new_info, (string)($info['non_result_set_queries'] + 1), $test_counter, 'CREATE DATABASE');        $info = $new_info;                if (!mysqli_query($link, "ALTER DATABASE DEFAULT CHARACTER SET latin1"))            printf("[%03d] ALTER DATABASE failed, [%d] %s\n", ++$test_counter,                 mysqli_errno($link), mysqli_error($link));                if (!is_array($new_info = mysqli_get_client_stats()) || empty($new_info))            printf("[%03d] Expecting array/any_non_empty, got %s/%s\n",                 ++$test_counter, gettype($new_info), $new_info);        mysqli_get_client_stats_assert_eq('non_result_set_queries', $new_info, (string)($info['non_result_set_queries'] + 1), $test_counter, 'CREATE DATABASE');        $info = $new_info;                if (mysqli_get_server_version($link) > 51700) {            if (!mysqli_query($link, "RENAME DATABASE mysqli_get_client_stats TO mysqli_get_client_stats_"))                printf("[%03d] RENAME DATABASE failed, [%d] %s\n", ++$test_counter,                     mysqli_errno($link), mysqli_error($link));                    if (!is_array($new_info = mysqli_get_client_stats()) || empty($new_info))                printf("[%03d] Expecting array/any_non_empty, got %s/%s\n",                     ++$test_counter, gettype($new_info), $new_info);            mysqli_get_client_stats_assert_eq('non_result_set_queries', $new_info, (string)($info['non_result_set_queries'] + 1), $test_counter, 'CREATE DATABASE');            $info = $new_info;        } else {          if (!mysqli_query($link, "CREATE DATABASE mysqli_get_client_stats_"))            printf("[%03d] CREATE DATABASE failed, [%d] %s\n", ++$test_counter,                 mysqli_errno($link), mysqli_error($link));          if (!is_array($new_info = mysqli_get_client_stats()) || empty($new_info))            printf("[%03d] Expecting array/any_non_empty, got %s/%s\n",                 ++$test_counter, gettype($new_info), $new_info);          $info = $new_info;        }                if (!mysqli_query($link, "DROP DATABASE mysqli_get_client_stats_"))            printf("[%03d] DROP DATABASE failed, [%d] %s\n", ++$test_counter,                 mysqli_errno($link), mysqli_error($link));                if (!is_array($new_info = mysqli_get_client_stats()) || empty($new_info))            printf("[%03d] Expecting array/any_non_empty, got %s/%s\n",                 ++$test_counter, gettype($new_info), $new_info);        mysqli_get_client_stats_assert_eq('non_result_set_queries', $new_info, (string)($info['non_result_set_queries'] + 1), $test_counter, 'DROP DATABASE');        $info = $new_info;    }    // CREATE SERVER, ALTER SERVER, DROP SERVER    // We don't really try to use federated, we just want to see if the syntax works    mysqli_query($link, "DROP SERVER IF EXISTS myself");        if (!is_array($new_info = mysqli_get_client_stats()) || empty($new_info))            printf("[%03d] Expecting array/any_non_empty, got %s/%s\n",                 ++$test_counter, gettype($new_info), $new_info);    $info = $new_info;        $sql = sprintf("CREATE SERVER myself FOREIGN DATA WRAPPER mysql OPTIONS (user '%s', password '%s', database '%s')",        $user, $passwd, $db);     if (mysqli_query($link, $sql)) {        // server knows about it                if (!is_array($new_info = mysqli_get_client_stats()) || empty($new_info))            printf("[%03d] Expecting array/any_non_empty, got %s/%s\n",                 ++$test_counter, gettype($new_info), $new_info);        mysqli_get_client_stats_assert_eq('non_result_set_queries', $new_info, (string)($info['non_result_set_queries'] + 1), $test_counter, 'CREATE SERVER');        $info = $new_info;                if (!mysqli_query($link, sprintf("ALTER SERVER myself OPTIONS(user '%s_')", $user)))

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -