Annotation of embedaddon/php/ext/pdo_mysql/pdo_mysql.c, revision 1.1.1.1
1.1 misho 1: /*
2: +----------------------------------------------------------------------+
3: | PHP Version 5 |
4: +----------------------------------------------------------------------+
5: | Copyright (c) 1997-2012 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: | Author: George Schlossnagle <george@omniti.com> |
16: | Johannes Schlueter <johannes@mysql.com> |
17: +----------------------------------------------------------------------+
18: */
19:
20: /* $Id: pdo_mysql.c 321634 2012-01-01 13:15:04Z felipe $ */
21:
22: #ifdef HAVE_CONFIG_H
23: #include "config.h"
24: #endif
25:
26: #include "php.h"
27: #include "php_ini.h"
28: #include "ext/standard/info.h"
29: #include "pdo/php_pdo.h"
30: #include "pdo/php_pdo_driver.h"
31: #include "php_pdo_mysql.h"
32: #include "php_pdo_mysql_int.h"
33:
34: #ifdef COMPILE_DL_PDO_MYSQL
35: ZEND_GET_MODULE(pdo_mysql)
36: #endif
37:
38: ZEND_DECLARE_MODULE_GLOBALS(pdo_mysql);
39:
40: /*
41: The default socket location is sometimes defined by configure.
42: With libmysql `mysql_config --socket` will fill PDO_MYSQL_UNIX_ADDR
43: and the user can use --with-mysql-sock=SOCKET which will fill
44: PDO_MYSQL_UNIX_ADDR. If both aren't set we're using mysqlnd and use
45: /tmp/mysql.sock as default on *nix and NULL for Windows (default
46: named pipe name is set in mysqlnd).
47: */
48: #ifndef PDO_MYSQL_UNIX_ADDR
49: # ifdef PHP_MYSQL_UNIX_SOCK_ADDR
50: # define PDO_MYSQL_UNIX_ADDR PHP_MYSQL_UNIX_SOCK_ADDR
51: # else
52: # if !PHP_WIN32
53: # define PDO_MYSQL_UNIX_ADDR "/tmp/mysql.sock"
54: # else
55: # define PDO_MYSQL_UNIX_ADDR NULL
56: # endif
57: # endif
58: #endif
59:
60: /* {{{ PHP_INI_BEGIN
61: */
62: PHP_INI_BEGIN()
63: #ifndef PHP_WIN32
64: STD_PHP_INI_ENTRY("pdo_mysql.default_socket", PDO_MYSQL_UNIX_ADDR, PHP_INI_SYSTEM, OnUpdateStringUnempty, default_socket, zend_pdo_mysql_globals, pdo_mysql_globals)
65: #endif
66: #if PDO_DBG_ENABLED
67: STD_PHP_INI_ENTRY("pdo_mysql.debug", NULL, PHP_INI_SYSTEM, OnUpdateString, debug, zend_pdo_mysql_globals, pdo_mysql_globals)
68: #endif
69: PHP_INI_END()
70: /* }}} */
71:
72: /* true global environment */
73:
74: /* {{{ PHP_MINIT_FUNCTION
75: */
76: static PHP_MINIT_FUNCTION(pdo_mysql)
77: {
78: REGISTER_INI_ENTRIES();
79:
80: REGISTER_PDO_CLASS_CONST_LONG("MYSQL_ATTR_USE_BUFFERED_QUERY", (long)PDO_MYSQL_ATTR_USE_BUFFERED_QUERY);
81: REGISTER_PDO_CLASS_CONST_LONG("MYSQL_ATTR_LOCAL_INFILE", (long)PDO_MYSQL_ATTR_LOCAL_INFILE);
82: REGISTER_PDO_CLASS_CONST_LONG("MYSQL_ATTR_INIT_COMMAND", (long)PDO_MYSQL_ATTR_INIT_COMMAND);
83: #ifndef PDO_USE_MYSQLND
84: REGISTER_PDO_CLASS_CONST_LONG("MYSQL_ATTR_MAX_BUFFER_SIZE", (long)PDO_MYSQL_ATTR_MAX_BUFFER_SIZE);
85: REGISTER_PDO_CLASS_CONST_LONG("MYSQL_ATTR_READ_DEFAULT_FILE", (long)PDO_MYSQL_ATTR_READ_DEFAULT_FILE);
86: REGISTER_PDO_CLASS_CONST_LONG("MYSQL_ATTR_READ_DEFAULT_GROUP", (long)PDO_MYSQL_ATTR_READ_DEFAULT_GROUP);
87: REGISTER_PDO_CLASS_CONST_LONG("MYSQL_ATTR_COMPRESS", (long)PDO_MYSQL_ATTR_COMPRESS);
88: #endif
89: REGISTER_PDO_CLASS_CONST_LONG("MYSQL_ATTR_DIRECT_QUERY", (long)PDO_MYSQL_ATTR_DIRECT_QUERY);
90: REGISTER_PDO_CLASS_CONST_LONG("MYSQL_ATTR_FOUND_ROWS", (long)PDO_MYSQL_ATTR_FOUND_ROWS);
91: REGISTER_PDO_CLASS_CONST_LONG("MYSQL_ATTR_IGNORE_SPACE", (long)PDO_MYSQL_ATTR_IGNORE_SPACE);
92: REGISTER_PDO_CLASS_CONST_LONG("MYSQL_ATTR_SSL_KEY", (long)PDO_MYSQL_ATTR_SSL_KEY);
93: REGISTER_PDO_CLASS_CONST_LONG("MYSQL_ATTR_SSL_CERT", (long)PDO_MYSQL_ATTR_SSL_CERT);
94: REGISTER_PDO_CLASS_CONST_LONG("MYSQL_ATTR_SSL_CA", (long)PDO_MYSQL_ATTR_SSL_CA);
95: REGISTER_PDO_CLASS_CONST_LONG("MYSQL_ATTR_SSL_CAPATH", (long)PDO_MYSQL_ATTR_SSL_CAPATH);
96: REGISTER_PDO_CLASS_CONST_LONG("MYSQL_ATTR_SSL_CIPHER", (long)PDO_MYSQL_ATTR_SSL_CIPHER);
97: return php_pdo_register_driver(&pdo_mysql_driver);
98: }
99: /* }}} */
100:
101: /* {{{ PHP_MSHUTDOWN_FUNCTION
102: */
103: static PHP_MSHUTDOWN_FUNCTION(pdo_mysql)
104: {
105: php_pdo_unregister_driver(&pdo_mysql_driver);
106: #if PDO_USE_MYSQLND
107: UNREGISTER_INI_ENTRIES();
108: #endif
109:
110: return SUCCESS;
111: }
112: /* }}} */
113:
114: /* {{{ PHP_MINFO_FUNCTION
115: */
116: static PHP_MINFO_FUNCTION(pdo_mysql)
117: {
118: php_info_print_table_start();
119:
120: php_info_print_table_header(2, "PDO Driver for MySQL", "enabled");
121: php_info_print_table_row(2, "Client API version", mysql_get_client_info());
122:
123: php_info_print_table_end();
124:
125: #ifndef PHP_WIN32
126: DISPLAY_INI_ENTRIES();
127: #endif
128: }
129: /* }}} */
130:
131:
132: #if PDO_USE_MYSQLND && PDO_DBG_ENABLED
133: /* {{{ PHP_RINIT_FUNCTION
134: */
135: static PHP_RINIT_FUNCTION(pdo_mysql)
136: {
137: if (PDO_MYSQL_G(debug)) {
138: MYSQLND_DEBUG *dbg = mysqlnd_debug_init(mysqlnd_debug_std_no_trace_funcs TSRMLS_CC);
139: if (!dbg) {
140: return FAILURE;
141: }
142: dbg->m->set_mode(dbg, PDO_MYSQL_G(debug));
143: PDO_MYSQL_G(dbg) = dbg;
144: }
145:
146: return SUCCESS;
147: }
148: /* }}} */
149:
150: /* {{{ PHP_RSHUTDOWN_FUNCTION
151: */
152: static PHP_RSHUTDOWN_FUNCTION(pdo_mysql)
153: {
154: MYSQLND_DEBUG *dbg = PDO_MYSQL_G(dbg);
155: PDO_DBG_ENTER("RSHUTDOWN");
156: if (dbg) {
157: dbg->m->close(dbg);
158: dbg->m->free_handle(dbg);
159: PDO_MYSQL_G(dbg) = NULL;
160: }
161:
162: return SUCCESS;
163: }
164: /* }}} */
165: #endif
166:
167: /* {{{ PHP_GINIT_FUNCTION
168: */
169: static PHP_GINIT_FUNCTION(pdo_mysql)
170: {
171: #ifndef PHP_WIN32
172: pdo_mysql_globals->default_socket = NULL;
173: #endif
174: #if PDO_DBG_ENABLED
175: pdo_mysql_globals->debug = NULL; /* The actual string */
176: pdo_mysql_globals->dbg = NULL; /* The DBG object*/
177: #endif
178: }
179: /* }}} */
180:
181: /* {{{ pdo_mysql_functions[] */
182: const zend_function_entry pdo_mysql_functions[] = {
183: PHP_FE_END
184: };
185: /* }}} */
186:
187: /* {{{ pdo_mysql_deps[] */
188: #if ZEND_MODULE_API_NO >= 20050922
189: static const zend_module_dep pdo_mysql_deps[] = {
190: ZEND_MOD_REQUIRED("pdo")
191: #ifdef PDO_USE_MYSQLND
192: ZEND_MOD_REQUIRED("mysqlnd")
193: #endif
194: ZEND_MOD_END
195: };
196: #endif
197: /* }}} */
198:
199: /* {{{ pdo_mysql_module_entry */
200: zend_module_entry pdo_mysql_module_entry = {
201: STANDARD_MODULE_HEADER_EX, NULL,
202: pdo_mysql_deps,
203: "pdo_mysql",
204: pdo_mysql_functions,
205: PHP_MINIT(pdo_mysql),
206: PHP_MSHUTDOWN(pdo_mysql),
207: #if PDO_USE_MYSQLND && PDO_DBG_ENABLED
208: PHP_RINIT(pdo_mysql),
209: PHP_RSHUTDOWN(pdo_mysql),
210: #else
211: NULL,
212: NULL,
213: #endif
214: PHP_MINFO(pdo_mysql),
215: "1.0.2",
216: PHP_MODULE_GLOBALS(pdo_mysql),
217: PHP_GINIT(pdo_mysql),
218: NULL,
219: NULL,
220: STANDARD_MODULE_PROPERTIES_EX
221: };
222: /* }}} */
223:
224:
225: /*
226: * Local variables:
227: * tab-width: 4
228: * c-basic-offset: 4
229: * End:
230: * vim600: noet sw=4 ts=4 fdm=marker
231: * vim<600: noet sw=4 ts=4
232: */
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>