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-21 Instrumented lines: 68
Code covered: 97.1 % Executed lines: 66
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 289285 2009-10-07 17:33:51Z 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                 : {
      43                 :         zval **values_entry;
      44                 :         HashPosition pos_values;
      45                 : 
      46                 :         zend_hash_internal_pointer_reset_ex(Z_ARRVAL_P(values), &pos_values);
      47                 :         while (zend_hash_get_current_data_ex(Z_ARRVAL_P(values),
      48                 :                                                                                 (void **)&values_entry, &pos_values) == SUCCESS) {
      49                 :                 TSRMLS_FETCH();
      50                 :                 zstr    string_key;
      51                 :                 uint    string_key_len;
      52                 :                 ulong   num_key;
      53                 :                 int     s_len;
      54                 :                 char    *s = NULL;
      55                 : 
      56                 :                 zend_hash_get_current_key_ex(Z_ARRVAL_P(values), &string_key, &string_key_len, &num_key, 0, &pos_values);
      57                 : 
      58                 :                 convert_to_string(*values_entry);
      59                 : 
      60                 :                 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                 :                         php_info_print_table_row(2, s, Z_STRVAL_PP(values_entry));
      63                 :                 }
      64                 :                 if (s) {
      65                 :                         mnd_efree(s);
      66                 :                 }
      67                 : 
      68                 :                 zend_hash_move_forward_ex(Z_ARRVAL_P(values), &pos_values);
      69                 :         }
      70                 : }
      71                 : #else
      72                 : void mysqlnd_minfo_print_hash(zval *values)
      73             168 : {
      74                 :         zval **values_entry;
      75                 :         HashPosition pos_values;
      76                 : 
      77             168 :         zend_hash_internal_pointer_reset_ex(Z_ARRVAL_P(values), &pos_values);
      78            7602 :         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            7266 :                 zend_hash_get_current_key_ex(Z_ARRVAL_P(values), &string_key, &string_key_len, &num_key, 0, &pos_values);
      84                 : 
      85            7266 :                 convert_to_string(*values_entry);
      86            7266 :                 php_info_print_table_row(2, string_key, Z_STRVAL_PP(values_entry));
      87                 : 
      88            7266 :                 zend_hash_move_forward_ex(Z_ARRVAL_P(values), &pos_values);
      89                 :         }
      90             168 : }
      91                 : #endif
      92                 : /* }}} */
      93                 : 
      94                 : 
      95                 : /* {{{ PHP_MINFO_FUNCTION
      96                 :  */
      97                 : PHP_MINFO_FUNCTION(mysqlnd)
      98              42 : {
      99                 :         char buf[32];
     100                 :         zval values;
     101                 : 
     102              42 :         php_info_print_table_start();
     103              42 :         php_info_print_table_header(2, "mysqlnd", "enabled");
     104              42 :         php_info_print_table_row(2, "Version", mysqlnd_get_client_info());
     105              42 :         snprintf(buf, sizeof(buf), "%ld", MYSQLND_G(net_cmd_buffer_size));
     106              42 :         php_info_print_table_row(2, "Command buffer size", buf);
     107              42 :         snprintf(buf, sizeof(buf), "%ld", MYSQLND_G(net_read_buffer_size));
     108              42 :         php_info_print_table_row(2, "Read buffer size", buf);
     109              42 :         snprintf(buf, sizeof(buf), "%ld", MYSQLND_G(net_read_timeout));
     110              42 :         php_info_print_table_row(2, "Read timeout", buf);
     111              42 :         php_info_print_table_row(2, "Collecting statistics", MYSQLND_G(collect_statistics)? "Yes":"No");
     112              42 :         php_info_print_table_row(2, "Collecting memory statistics", MYSQLND_G(collect_memory_statistics)? "Yes":"No");
     113              42 :         php_info_print_table_end();
     114                 : 
     115                 :         /* Print client stats */
     116              42 :         php_info_print_table_start();
     117              42 :         php_info_print_table_header(2, "Client statistics", "");
     118              42 :         mysqlnd_get_client_stats(&values);
     119              42 :         mysqlnd_minfo_print_hash(&values);
     120                 : 
     121              42 :         zval_dtor(&values);
     122              42 :         php_info_print_table_end();
     123              42 : }
     124                 : /* }}} */
     125                 : 
     126                 : 
     127                 : ZEND_DECLARE_MODULE_GLOBALS(mysqlnd);
     128                 : 
     129                 : 
     130                 : /* {{{ PHP_GINIT_FUNCTION
     131                 :  */
     132                 : static PHP_GINIT_FUNCTION(mysqlnd)
     133           17633 : {
     134           17633 :         mysqlnd_globals->collect_statistics = TRUE;
     135           17633 :         mysqlnd_globals->collect_memory_statistics = FALSE;
     136           17633 :         mysqlnd_globals->debug = NULL;       /* The actual string */
     137           17633 :         mysqlnd_globals->dbg = NULL; /* The DBG object*/
     138           17633 :         mysqlnd_globals->net_cmd_buffer_size = MYSQLND_NET_CMD_BUFFER_MIN_SIZE;
     139           17633 :         mysqlnd_globals->net_read_buffer_size = 32768;
     140           17633 :         mysqlnd_globals->net_read_timeout = 31536000;
     141           17633 :         mysqlnd_globals->log_mask = 0;
     142           17633 : }
     143                 : /* }}} */
     144                 : 
     145                 : 
     146                 : static PHP_INI_MH(OnUpdateNetCmdBufferSize)
     147           17633 : {
     148           17633 :         long long_value = atol(new_value);
     149           17633 :         if (long_value < MYSQLND_NET_CMD_BUFFER_MIN_SIZE) {
     150               0 :                 return FAILURE;
     151                 :         }
     152           17633 :         MYSQLND_G(net_cmd_buffer_size) = long_value;
     153                 : 
     154           17633 :         return SUCCESS;
     155                 : }
     156                 : 
     157                 : /* {{{ PHP_INI_BEGIN
     158                 : */
     159                 : PHP_INI_BEGIN()
     160                 :         STD_PHP_INI_BOOLEAN("mysqlnd.collect_statistics",     "1",  PHP_INI_ALL, OnUpdateBool,      collect_statistics, zend_mysqlnd_globals, mysqlnd_globals)
     161                 :         STD_PHP_INI_BOOLEAN("mysqlnd.collect_memory_statistics",      "0",  PHP_INI_SYSTEM, OnUpdateBool,   collect_memory_statistics, zend_mysqlnd_globals, mysqlnd_globals)
     162                 :         STD_PHP_INI_ENTRY("mysqlnd.debug",                                    NULL,   PHP_INI_SYSTEM, OnUpdateString, debug, zend_mysqlnd_globals, mysqlnd_globals)
     163                 :         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)
     164                 :         STD_PHP_INI_ENTRY("mysqlnd.net_read_buffer_size",     "32768",PHP_INI_ALL,  OnUpdateLong,   net_read_buffer_size,   zend_mysqlnd_globals,           mysqlnd_globals)
     165                 :         STD_PHP_INI_ENTRY("mysqlnd.net_read_timeout", "31536000",   PHP_INI_SYSTEM, OnUpdateLong,   net_read_timeout, zend_mysqlnd_globals, mysqlnd_globals)
     166                 :         STD_PHP_INI_ENTRY("mysqlnd.log_mask",                         "0",  PHP_INI_ALL,    OnUpdateLong,   log_mask, zend_mysqlnd_globals, mysqlnd_globals)
     167                 : PHP_INI_END()
     168                 : /* }}} */
     169                 : 
     170                 : 
     171                 : /* {{{ PHP_MINIT_FUNCTION
     172                 :  */
     173                 : static PHP_MINIT_FUNCTION(mysqlnd)
     174           17633 : {
     175           17633 :         REGISTER_INI_ENTRIES();
     176                 : 
     177           17633 :         mysqlnd_library_init(TSRMLS_C);
     178           17633 :         return SUCCESS;
     179                 : }
     180                 : /* }}} */
     181                 : 
     182                 : 
     183                 : /* {{{ PHP_MSHUTDOWN_FUNCTION
     184                 :  */
     185                 : static PHP_MSHUTDOWN_FUNCTION(mysqlnd)
     186           17665 : {
     187           17665 :         mysqlnd_library_end(TSRMLS_C);
     188                 : 
     189           17665 :         UNREGISTER_INI_ENTRIES();
     190           17665 :         return SUCCESS;
     191                 : }
     192                 : /* }}} */
     193                 : 
     194                 : 
     195                 : #if defined(PHP_DEBUG) || defined(MYSQLND_THREADED)
     196                 : /* {{{ PHP_RINIT_FUNCTION
     197                 :  */
     198                 : static PHP_RINIT_FUNCTION(mysqlnd)
     199           17619 : {
     200                 : #if defined(PHP_DEBUG)
     201           17619 :         if (MYSQLND_G(debug)) {
     202               1 :                 MYSQLND_DEBUG *dbg = mysqlnd_debug_init(TSRMLS_C);
     203               1 :                 if (!dbg) {
     204               0 :                         return FAILURE;
     205                 :                 }
     206               1 :                 dbg->m->set_mode(dbg, MYSQLND_G(debug));
     207               1 :                 MYSQLND_G(dbg) = dbg;
     208                 :         }
     209                 : #endif
     210                 : #ifdef MYSQLND_THREADED
     211                 :         MYSQLND_G(thread_id) = tsrm_thread_id();
     212                 : #endif
     213           17619 :         return SUCCESS;
     214                 : }
     215                 : /* }}} */
     216                 : #endif
     217                 : 
     218                 : 
     219                 : #if defined(PHP_DEBUG)
     220                 : /* {{{ PHP_RSHUTDOWN_FUNCTION
     221                 :  */
     222                 : static PHP_RSHUTDOWN_FUNCTION(mysqlnd)
     223           17651 : {
     224           17651 :         MYSQLND_DEBUG *dbg = MYSQLND_G(dbg);
     225           17651 :         DBG_ENTER("RSHUTDOWN");
     226           17651 :         if (dbg) {
     227               1 :                 dbg->m->close(dbg);
     228               1 :                 dbg->m->free_handle(dbg);
     229               1 :                 MYSQLND_G(dbg) = NULL;
     230                 :         }
     231           17651 :         return SUCCESS;
     232                 : }
     233                 : /* }}} */
     234                 : #endif
     235                 : 
     236                 : 
     237                 : /* {{{ mysqlnd_module_entry
     238                 :  */
     239                 : zend_module_entry mysqlnd_module_entry = {
     240                 :         STANDARD_MODULE_HEADER,
     241                 :         "mysqlnd",
     242                 :         mysqlnd_functions,
     243                 :         PHP_MINIT(mysqlnd),
     244                 :         PHP_MSHUTDOWN(mysqlnd),
     245                 : #if defined(PHP_DEBUG) || defined(MYSQLND_THREADED)
     246                 :         PHP_RINIT(mysqlnd),
     247                 : #else
     248                 :         NULL,
     249                 : #endif
     250                 : #ifdef PHP_DEBUG
     251                 :         PHP_RSHUTDOWN(mysqlnd),
     252                 : #else
     253                 :         NULL,
     254                 : #endif
     255                 :         PHP_MINFO(mysqlnd),
     256                 :         MYSQLND_VERSION,
     257                 :         PHP_MODULE_GLOBALS(mysqlnd),
     258                 :         PHP_GINIT(mysqlnd),
     259                 :         NULL,
     260                 :         NULL,
     261                 :         STANDARD_MODULE_PROPERTIES_EX
     262                 : };
     263                 : /* }}} */
     264                 : 
     265                 : 
     266                 : /*
     267                 :  * Local variables:
     268                 :  * tab-width: 4
     269                 :  * c-basic-offset: 4
     270                 :  * End:
     271                 :  * vim600: noet sw=4 ts=4 fdm=marker
     272                 :  * vim<600: noet sw=4 ts=4
     273                 :  */

Generated by: LTP GCOV extension version 1.5

Generated at Sat, 21 Nov 2009 12:27:03 +0000 (3 days ago)

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