]> granicus.if.org Git - php/commitdiff
Increase the minimal size of the command buffer, which is used
authorAndrey Hristov <andrey@php.net>
Wed, 7 Oct 2009 17:33:51 +0000 (17:33 +0000)
committerAndrey Hristov <andrey@php.net>
Wed, 7 Oct 2009 17:33:51 +0000 (17:33 +0000)
for sending queries and in the future commpressed patch for reading
almost all packets from the wire instead of using stack buffers.

ext/mysqlnd/mysqlnd.c
ext/mysqlnd/mysqlnd_enum_n_def.h
ext/mysqlnd/php_mysqlnd.c

index 904a310dbaaeccced7896db384b2d290e78b1db1..4f1fbb06d1d3d025ab88ea1ef4b52fc2ecceb979 100644 (file)
@@ -1948,6 +1948,9 @@ MYSQLND_METHOD(mysqlnd_conn, set_client_option)(MYSQLND * const conn,
                        break;
 #endif
                case MYSQLND_OPT_NET_CMD_BUFFER_SIZE:
+                       if (*(unsigned int*) value < MYSQLND_NET_CMD_BUFFER_MIN_SIZE) {
+                               DBG_RETURN(FAIL);
+                       }
                        conn->net.cmd_buffer.length = *(unsigned int*) value;
                        if (!conn->net.cmd_buffer.buffer) {
                                conn->net.cmd_buffer.buffer = mnd_pemalloc(conn->net.cmd_buffer.length, conn->persistent);
index 2293199a164b353ca421bf8b257ff32ef666d444..478088edaefc5d292e5707c7e54b52ca1c8e4f75 100644 (file)
 #define MYSQLND_SQLSTATE_LENGTH                5
 #define MYSQLND_SQLSTATE_NULL          "00000"
 
+
+#define MYSQLND_NET_CMD_BUFFER_MIN_SIZE                        4096
+#define MYSQLND_NET_CMD_BUFFER_MIN_SIZE_STR            "4096"
+
 #define SERVER_STATUS_IN_TRANS                                 1       /* Transaction has started */
 #define SERVER_STATUS_AUTOCOMMIT                               2       /* Server in auto_commit mode */
 #define SERVER_MORE_RESULTS_EXISTS                             8       /* Multi query - next query exists */
index 00fd8c454e9b155fe297c49064b1f594a2733a20..1465681bd303d40cf008a0308117bcc4d6230cc8 100644 (file)
@@ -26,7 +26,6 @@
 #include "mysqlnd_debug.h"
 #include "ext/standard/info.h"
 
-
 /* {{{ mysqlnd_functions[]
  *
  * Every user visible function must have an entry in mysqlnd_functions[].
@@ -136,7 +135,7 @@ static PHP_GINIT_FUNCTION(mysqlnd)
        mysqlnd_globals->collect_memory_statistics = FALSE;
        mysqlnd_globals->debug = NULL;  /* The actual string */
        mysqlnd_globals->dbg = NULL;    /* The DBG object*/
-       mysqlnd_globals->net_cmd_buffer_size = 2048;
+       mysqlnd_globals->net_cmd_buffer_size = MYSQLND_NET_CMD_BUFFER_MIN_SIZE;
        mysqlnd_globals->net_read_buffer_size = 32768;
        mysqlnd_globals->net_read_timeout = 31536000;
        mysqlnd_globals->log_mask = 0;
@@ -144,13 +143,24 @@ static PHP_GINIT_FUNCTION(mysqlnd)
 /* }}} */
 
 
+static PHP_INI_MH(OnUpdateNetCmdBufferSize)
+{
+       long long_value = atol(new_value);
+       if (long_value < MYSQLND_NET_CMD_BUFFER_MIN_SIZE) {
+               return FAILURE;
+       }
+       MYSQLND_G(net_cmd_buffer_size) = long_value;
+
+       return SUCCESS;
+}
+
 /* {{{ PHP_INI_BEGIN
 */
 PHP_INI_BEGIN()
        STD_PHP_INI_BOOLEAN("mysqlnd.collect_statistics",       "1",    PHP_INI_ALL, OnUpdateBool,      collect_statistics, zend_mysqlnd_globals, mysqlnd_globals)
        STD_PHP_INI_BOOLEAN("mysqlnd.collect_memory_statistics",        "0",    PHP_INI_SYSTEM, OnUpdateBool,   collect_memory_statistics, zend_mysqlnd_globals, mysqlnd_globals)
        STD_PHP_INI_ENTRY("mysqlnd.debug",                                      NULL,   PHP_INI_SYSTEM, OnUpdateString, debug, zend_mysqlnd_globals, mysqlnd_globals)
-       STD_PHP_INI_ENTRY("mysqlnd.net_cmd_buffer_size",        "2048", PHP_INI_ALL,    OnUpdateLong,   net_cmd_buffer_size,    zend_mysqlnd_globals,           mysqlnd_globals)
+       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)
        STD_PHP_INI_ENTRY("mysqlnd.net_read_buffer_size",       "32768",PHP_INI_ALL,    OnUpdateLong,   net_read_buffer_size,   zend_mysqlnd_globals,           mysqlnd_globals)
        STD_PHP_INI_ENTRY("mysqlnd.net_read_timeout",   "31536000",     PHP_INI_SYSTEM, OnUpdateLong,   net_read_timeout, zend_mysqlnd_globals, mysqlnd_globals)
        STD_PHP_INI_ENTRY("mysqlnd.log_mask",                           "0",    PHP_INI_ALL,    OnUpdateLong,   log_mask, zend_mysqlnd_globals, mysqlnd_globals)