PHP  
 PHP: Test and Code Coverage Analysis
downloads | QA | documentation | faq | getting help | mailing lists | reporting bugs | php.net sites | links | my php.net 
 

LTP GCOV extension - code coverage report
Current view: directory - mysqlnd - php_mysqlnd.c
Test: PHP Code Coverage
Date: 2009-11-23 Instrumented lines: 73
Code covered: 97.3 % Executed lines: 71
Legend: not executed executed

       1                 : /*
       2                 :   +----------------------------------------------------------------------+
       3                 :   | PHP Version 6                                                        |
       4                 :   +----------------------------------------------------------------------+
       5                 :   | Copyright (c) 2006-2009 The PHP Group                                |
       6                 :   +----------------------------------------------------------------------+
       7                 :   | This source file is subject to version 3.01 of the PHP license,      |
       8                 :   | that is bundled with this package in the file LICENSE, and is        |
       9                 :   | available through the world-wide-web at the following url:           |
      10                 :   | http://www.php.net/license/3_01.txt                                  |
      11                 :   | If you did not receive a copy of the PHP license and are unable to   |
      12                 :   | obtain it through the world-wide-web, please send a note to          |
      13                 :   | license@php.net so we can mail you a copy immediately.               |
      14                 :   +----------------------------------------------------------------------+
      15                 :   | Authors: Georg Richter <georg@mysql.com>                             |
      16                 :   |          Andrey Hristov <andrey@mysql.com>                           |
      17                 :   |          Ulf Wendel <uwendel@mysql.com>                              |
      18                 :   +----------------------------------------------------------------------+
      19                 : */
      20                 : 
      21                 : /* $Id: php_mysqlnd.c 291051 2009-11-20 08:12:14Z andrey $ */
      22                 : #include "php.h"
      23                 : #include "php_ini.h"
      24                 : #include "mysqlnd.h"
      25                 : #include "mysqlnd_priv.h"
      26                 : #include "mysqlnd_debug.h"
      27                 : #include "ext/standard/info.h"
      28                 : 
      29                 : /* {{{ mysqlnd_functions[]
      30                 :  *
      31                 :  * Every user visible function must have an entry in mysqlnd_functions[].
      32                 :  */
      33                 : static zend_function_entry mysqlnd_functions[] = {
      34                 :         {NULL, NULL, NULL}      /* Must be the last line in mysqlnd_functions[] */
      35                 : };
      36                 : /* }}} */
      37                 : 
      38                 : 
      39                 : /* {{{ mysqlnd_minfo_print_hash */
      40                 : #if PHP_MAJOR_VERSION >= 6
      41                 : PHPAPI void mysqlnd_minfo_print_hash(zval *values)
      42             172 : {
      43                 :         zval **values_entry;
      44                 :         HashPosition pos_values;
      45                 : 
      46             172 :         zend_hash_internal_pointer_reset_ex(Z_ARRVAL_P(values), &pos_values);
      47            7783 :         while (zend_hash_get_current_data_ex(Z_ARRVAL_P(values),
      48                 :                 (void **)&values_entry, &pos_values) == SUCCESS) {
      49                 :                 zstr    string_key;
      50                 :                 uint    string_key_len;
      51                 :                 ulong   num_key;
      52                 :                 int     s_len;
      53            7439 :                 char    *s = NULL;
      54                 : 
      55                 :                 TSRMLS_FETCH();
      56            7439 :                 zend_hash_get_current_key_ex(Z_ARRVAL_P(values), &string_key, &string_key_len, &num_key, 0, &pos_values);
      57                 : 
      58            7439 :                 convert_to_string(*values_entry);
      59                 : 
      60            7439 :                 if (zend_unicode_to_string(ZEND_U_CONVERTER(UG(runtime_encoding_conv)),
      61                 :                                                                    &s, &s_len, string_key.u, string_key_len TSRMLS_CC) == SUCCESS) {
      62            7439 :                         php_info_print_table_row(2, s, Z_STRVAL_PP(values_entry));
      63                 :                 }
      64            7439 :                 if (s) {
      65            7439 :                         mnd_efree(s);
      66                 :                 }
      67                 : 
      68            7439 :                 zend_hash_move_forward_ex(Z_ARRVAL_P(values), &pos_values);
      69                 :         }
      70             172 : }
      71                 : #else
      72                 : void mysqlnd_minfo_print_hash(zval *values)
      73                 : {
      74                 :         zval **values_entry;
      75                 :         HashPosition pos_values;
      76                 : 
      77                 :         zend_hash_internal_pointer_reset_ex(Z_ARRVAL_P(values), &pos_values);
      78                 :         while (zend_hash_get_current_data_ex(Z_ARRVAL_P(values), (void **)&values_entry, &pos_values) == SUCCESS) {
      79                 :                 char    *string_key;
      80                 :                 uint    string_key_len;
      81                 :                 ulong   num_key;
      82                 : 
      83                 :                 zend_hash_get_current_key_ex(Z_ARRVAL_P(values), &string_key, &string_key_len, &num_key, 0, &pos_values);
      84                 : 
      85                 :                 convert_to_string(*values_entry);
      86                 :                 php_info_print_table_row(2, string_key, Z_STRVAL_PP(values_entry));
      87                 : 
      88                 :                 zend_hash_move_forward_ex(Z_ARRVAL_P(values), &pos_values);
      89                 :         }
      90                 : }
      91                 : #endif
      92                 : /* }}} */
      93                 : 
      94                 : 
      95                 : /* {{{ PHP_MINFO_FUNCTION
      96                 :  */
      97                 : PHP_MINFO_FUNCTION(mysqlnd)
      98              43 : {
      99                 :         char buf[32];
     100                 :         zval values;
     101                 : 
     102              43 :         php_info_print_table_start();
     103              43 :         php_info_print_table_header(2, "mysqlnd", "enabled");
     104              43 :         php_info_print_table_row(2, "Version", mysqlnd_get_client_info());
     105              43 :         php_info_print_table_row(2, "Compression",
     106                 : #ifdef MYSQLND_COMPRESSION_ENABLED
     107                 :                                                                 "supported");
     108                 : #else
     109                 :                                                                 "not supported");
     110                 : #endif
     111              43 :         snprintf(buf, sizeof(buf), "%ld", MYSQLND_G(net_cmd_buffer_size));
     112              43 :         php_info_print_table_row(2, "Command buffer size", buf);
     113              43 :         snprintf(buf, sizeof(buf), "%ld", MYSQLND_G(net_read_buffer_size));
     114              43 :         php_info_print_table_row(2, "Read buffer size", buf);
     115              43 :         snprintf(buf, sizeof(buf), "%ld", MYSQLND_G(net_read_timeout));
     116              43 :         php_info_print_table_row(2, "Read timeout", buf);
     117              43 :         php_info_print_table_row(2, "Collecting statistics", MYSQLND_G(collect_statistics)? "Yes":"No");
     118              43 :         php_info_print_table_row(2, "Collecting memory statistics", MYSQLND_G(collect_memory_statistics)? "Yes":"No");
     119              43 :         php_info_print_table_end();
     120                 : 
     121                 :         /* Print client stats */
     122              43 :         php_info_print_table_start();
     123              43 :         php_info_print_table_header(2, "Client statistics", "");
     124              43 :         mysqlnd_get_client_stats(&values);
     125              43 :         mysqlnd_minfo_print_hash(&values);
     126                 : 
     127              43 :         zval_dtor(&values);
     128              43 :         php_info_print_table_end();
     129              43 : }
     130                 : /* }}} */
     131                 : 
     132                 : 
     133                 : ZEND_DECLARE_MODULE_GLOBALS(mysqlnd);
     134                 : 
     135                 : 
     136                 : /* {{{ PHP_GINIT_FUNCTION
     137                 :  */
     138                 : static PHP_GINIT_FUNCTION(mysqlnd)
     139           17007 : {
     140           17007 :         mysqlnd_globals->collect_statistics = TRUE;
     141           17007 :         mysqlnd_globals->collect_memory_statistics = FALSE;
     142           17007 :         mysqlnd_globals->debug = NULL;       /* The actual string */
     143           17007 :         mysqlnd_globals->dbg = NULL; /* The DBG object*/
     144           17007 :         mysqlnd_globals->net_cmd_buffer_size = MYSQLND_NET_CMD_BUFFER_MIN_SIZE;
     145           17007 :         mysqlnd_globals->net_read_buffer_size = 32768;
     146           17007 :         mysqlnd_globals->net_read_timeout = 31536000;
     147           17007 :         mysqlnd_globals->log_mask = 0;
     148           17007 : }
     149                 : /* }}} */
     150                 : 
     151                 : 
     152                 : static PHP_INI_MH(OnUpdateNetCmdBufferSize)
     153           17007 : {
     154           17007 :         long long_value = atol(new_value);
     155           17007 :         if (long_value < MYSQLND_NET_CMD_BUFFER_MIN_SIZE) {
     156               0 :                 return FAILURE;
     157                 :         }
     158           17007 :         MYSQLND_G(net_cmd_buffer_size) = long_value;
     159                 : 
     160           17007 :         return SUCCESS;
     161                 : }
     162                 : 
     163                 : /* {{{ PHP_INI_BEGIN
     164                 : */
     165                 : PHP_INI_BEGIN()
     166                 :         STD_PHP_INI_BOOLEAN("mysqlnd.collect_statistics",     "1",  PHP_INI_ALL, OnUpdateBool,      collect_statistics, zend_mysqlnd_globals, mysqlnd_globals)
     167                 :         STD_PHP_INI_BOOLEAN("mysqlnd.collect_memory_statistics",      "0",  PHP_INI_SYSTEM, OnUpdateBool,   collect_memory_statistics, zend_mysqlnd_globals, mysqlnd_globals)
     168                 :         STD_PHP_INI_ENTRY("mysqlnd.debug",                                    NULL,   PHP_INI_SYSTEM, OnUpdateString, debug, zend_mysqlnd_globals, mysqlnd_globals)
     169                 :         STD_PHP_INI_ENTRY("mysqlnd.net_cmd_buffer_size",      MYSQLND_NET_CMD_BUFFER_MIN_SIZE_STR,    PHP_INI_ALL,    OnUpdateNetCmdBufferSize,       net_cmd_buffer_size,    zend_mysqlnd_globals,           mysqlnd_globals)
     170                 :         STD_PHP_INI_ENTRY("mysqlnd.net_read_buffer_size",     "32768",PHP_INI_ALL,  OnUpdateLong,   net_read_buffer_size,   zend_mysqlnd_globals,           mysqlnd_globals)
     171                 :         STD_PHP_INI_ENTRY("mysqlnd.net_read_timeout", "31536000",   PHP_INI_SYSTEM, OnUpdateLong,   net_read_timeout, zend_mysqlnd_globals, mysqlnd_globals)
     172                 :         STD_PHP_INI_ENTRY("mysqlnd.log_mask",                         "0",  PHP_INI_ALL,    OnUpdateLong,   log_mask, zend_mysqlnd_globals, mysqlnd_globals)
     173                 : PHP_INI_END()
     174                 : /* }}} */
     175                 : 
     176                 : 
     177                 : /* {{{ PHP_MINIT_FUNCTION
     178                 :  */
     179                 : static PHP_MINIT_FUNCTION(mysqlnd)
     180           17007 : {
     181           17007 :         REGISTER_INI_ENTRIES();
     182                 : 
     183           17007 :         mysqlnd_library_init(TSRMLS_C);
     184           17007 :         return SUCCESS;
     185                 : }
     186                 : /* }}} */
     187                 : 
     188                 : 
     189                 : /* {{{ PHP_MSHUTDOWN_FUNCTION
     190                 :  */
     191                 : static PHP_MSHUTDOWN_FUNCTION(mysqlnd)
     192           17039 : {
     193           17039 :         mysqlnd_library_end(TSRMLS_C);
     194                 : 
     195           17039 :         UNREGISTER_INI_ENTRIES();
     196           17039 :         return SUCCESS;
     197                 : }
     198                 : /* }}} */
     199                 : 
     200                 : 
     201                 : #if defined(PHP_DEBUG) || defined(MYSQLND_THREADED)
     202                 : /* {{{ PHP_RINIT_FUNCTION
     203                 :  */
     204                 : static PHP_RINIT_FUNCTION(mysqlnd)
     205           16993 : {
     206                 : #if defined(PHP_DEBUG)
     207           16993 :         if (MYSQLND_G(debug)) {
     208               1 :                 MYSQLND_DEBUG *dbg = mysqlnd_debug_init(TSRMLS_C);
     209               1 :                 if (!dbg) {
     210               0 :                         return FAILURE;
     211                 :                 }
     212               1 :                 dbg->m->set_mode(dbg, MYSQLND_G(debug));
     213               1 :                 MYSQLND_G(dbg) = dbg;
     214                 :         }
     215                 : #endif
     216                 : #ifdef MYSQLND_THREADED
     217                 :         MYSQLND_G(thread_id) = tsrm_thread_id();
     218                 : #endif
     219           16993 :         return SUCCESS;
     220                 : }
     221                 : /* }}} */
     222                 : #endif
     223                 : 
     224                 : 
     225                 : #if defined(PHP_DEBUG)
     226                 : /* {{{ PHP_RSHUTDOWN_FUNCTION
     227                 :  */
     228                 : static PHP_RSHUTDOWN_FUNCTION(mysqlnd)
     229           17025 : {
     230           17025 :         MYSQLND_DEBUG *dbg = MYSQLND_G(dbg);
     231           17025 :         DBG_ENTER("RSHUTDOWN");
     232           17025 :         if (dbg) {
     233               1 :                 dbg->m->close(dbg);
     234               1 :                 dbg->m->free_handle(dbg);
     235               1 :                 MYSQLND_G(dbg) = NULL;
     236                 :         }
     237           17025 :         return SUCCESS;
     238                 : }
     239                 : /* }}} */
     240                 : #endif
     241                 : 
     242                 : 
     243                 : 
     244                 : static const zend_module_dep mysqlnd_deps[] = {
     245                 :         ZEND_MOD_REQUIRED("standard")
     246                 :         {NULL, NULL, NULL}
     247                 : };
     248                 : 
     249                 : /* {{{ mysqlnd_module_entry
     250                 :  */
     251                 : zend_module_entry mysqlnd_module_entry = {
     252                 :         STANDARD_MODULE_HEADER_EX,
     253                 :         NULL,
     254                 :         mysqlnd_deps,
     255                 :         "mysqlnd",
     256                 :         mysqlnd_functions,
     257                 :         PHP_MINIT(mysqlnd),
     258                 :         PHP_MSHUTDOWN(mysqlnd),
     259                 : #if defined(PHP_DEBUG) || defined(MYSQLND_THREADED)
     260                 :         PHP_RINIT(mysqlnd),
     261                 : #else
     262                 :         NULL,
     263                 : #endif
     264                 : #ifdef PHP_DEBUG
     265                 :         PHP_RSHUTDOWN(mysqlnd),
     266                 : #else
     267                 :         NULL,
     268                 : #endif
     269                 :         PHP_MINFO(mysqlnd),
     270                 :         MYSQLND_VERSION,
     271                 :         PHP_MODULE_GLOBALS(mysqlnd),
     272                 :         PHP_GINIT(mysqlnd),
     273                 :         NULL,
     274                 :         NULL,
     275                 :         STANDARD_MODULE_PROPERTIES_EX
     276                 : };
     277                 : /* }}} */
     278                 : 
     279                 : 
     280                 : /*
     281                 :  * Local variables:
     282                 :  * tab-width: 4
     283                 :  * c-basic-offset: 4
     284                 :  * End:
     285                 :  * vim600: noet sw=4 ts=4 fdm=marker
     286                 :  * vim<600: noet sw=4 ts=4
     287                 :  */

Generated by: LTP GCOV extension version 1.5

Generated at Mon, 23 Nov 2009 17:39:32 +0000 (36 hours ago)

Copyright © 2005-2009 The PHP Group
All rights reserved.