dmitry Fri Nov 17 11:40:53 2006 UTC Modified files: (Branch: PHP_5_2) /php-src NEWS /php-src/main main.c php.h php_globals.h /php-src/ext/com_dotnet com_com.c com_dotnet.c com_handlers.c com_variant.c Log: COM initialization/deinitialization are done only if necessary
http://cvs.php.net/viewvc.cgi/php-src/NEWS?r1=1.2027.2.547.2.366&r2=1.2027.2.547.2.367&diff_format=u Index: php-src/NEWS diff -u php-src/NEWS:1.2027.2.547.2.366 php-src/NEWS:1.2027.2.547.2.367 --- php-src/NEWS:1.2027.2.547.2.366 Wed Nov 15 23:28:05 2006 +++ php-src/NEWS Fri Nov 17 11:40:52 2006 @@ -7,6 +7,7 @@ The new directive cgi.check_shebang_line can be used to ommiting checnk for "#! /usr/bin/php" line. (Dmitry). - Windows related optimizations (Dmitry, Stas) + . COM initialization/deinitialization are done only if necessary . removed unnecessary checks for ISREG file and corresponding stat() calls . opendir() is reimplemented using GetFistFile/GetNextFile those are faster then _findfirst/_findnext http://cvs.php.net/viewvc.cgi/php-src/main/main.c?r1=1.640.2.23.2.17&r2=1.640.2.23.2.18&diff_format=u Index: php-src/main/main.c diff -u php-src/main/main.c:1.640.2.23.2.17 php-src/main/main.c:1.640.2.23.2.18 --- php-src/main/main.c:1.640.2.23.2.17 Fri Nov 10 11:42:07 2006 +++ php-src/main/main.c Fri Nov 17 11:40:52 2006 @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: main.c,v 1.640.2.23.2.17 2006/11/10 11:42:07 dmitry Exp $ */ +/* $Id: main.c,v 1.640.2.23.2.18 2006/11/17 11:40:52 dmitry Exp $ */ /* {{{ includes */ @@ -1073,7 +1073,7 @@ int retval = SUCCESS; #ifdef PHP_WIN32 - CoInitialize(NULL); + PG(com_initialized) = 0; #endif #if PHP_SIGCHILD @@ -1325,12 +1325,28 @@ } zend_end_try(); #ifdef PHP_WIN32 - CoUninitialize(); + if (PG(com_initialized)) { + CoUninitialize(); + PG(com_initialized) = 0; + } #endif } /* }}} */ +/* {{{ php_com_initialize + */ +PHPAPI void php_com_initialize(TSRMLS_D) +{ +#ifdef PHP_WIN32 + if (!PG(com_initialized)) { + CoInitialize(NULL); + PG(com_initialized) = 1; + } +#endif +} +/* }}} */ + /* {{{ php_body_write_wrapper */ static int php_body_write_wrapper(const char *str, uint str_length) http://cvs.php.net/viewvc.cgi/php-src/main/php.h?r1=1.221.2.4.2.4&r2=1.221.2.4.2.5&diff_format=u Index: php-src/main/php.h diff -u php-src/main/php.h:1.221.2.4.2.4 php-src/main/php.h:1.221.2.4.2.5 --- php-src/main/php.h:1.221.2.4.2.4 Fri Nov 10 09:56:16 2006 +++ php-src/main/php.h Fri Nov 17 11:40:52 2006 @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php.h,v 1.221.2.4.2.4 2006/11/10 09:56:16 dmitry Exp $ */ +/* $Id: php.h,v 1.221.2.4.2.5 2006/11/17 11:40:52 dmitry Exp $ */ #ifndef PHP_H #define PHP_H @@ -329,6 +329,8 @@ PHPAPI int cfg_get_long(char *varname, long *result); PHPAPI int cfg_get_double(char *varname, double *result); PHPAPI int cfg_get_string(char *varname, char **result); + +PHPAPI void php_com_initialize(TSRMLS_D); END_EXTERN_C() /* PHP-named Zend macro wrappers */ http://cvs.php.net/viewvc.cgi/php-src/main/php_globals.h?r1=1.98.2.1.2.2&r2=1.98.2.1.2.3&diff_format=u Index: php-src/main/php_globals.h diff -u php-src/main/php_globals.h:1.98.2.1.2.2 php-src/main/php_globals.h:1.98.2.1.2.3 --- php-src/main/php_globals.h:1.98.2.1.2.2 Wed Jul 19 12:25:46 2006 +++ php-src/main/php_globals.h Fri Nov 17 11:40:52 2006 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_globals.h,v 1.98.2.1.2.2 2006/07/19 12:25:46 mike Exp $ */ +/* $Id: php_globals.h,v 1.98.2.1.2.3 2006/11/17 11:40:52 dmitry Exp $ */ #ifndef PHP_GLOBALS_H #define PHP_GLOBALS_H @@ -152,6 +152,9 @@ char *disable_functions; char *disable_classes; zend_bool allow_url_include; +#ifdef PHP_WIN32 + zend_bool com_initialized; +#endif }; http://cvs.php.net/viewvc.cgi/php-src/ext/com_dotnet/com_com.c?r1=1.16.2.2.2.1&r2=1.16.2.2.2.2&diff_format=u Index: php-src/ext/com_dotnet/com_com.c diff -u php-src/ext/com_dotnet/com_com.c:1.16.2.2.2.1 php-src/ext/com_dotnet/com_com.c:1.16.2.2.2.2 --- php-src/ext/com_dotnet/com_com.c:1.16.2.2.2.1 Tue Oct 10 17:32:50 2006 +++ php-src/ext/com_dotnet/com_com.c Fri Nov 17 11:40:52 2006 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: com_com.c,v 1.16.2.2.2.1 2006/10/10 17:32:50 iliaa Exp $ */ +/* $Id: com_com.c,v 1.16.2.2.2.2 2006/11/17 11:40:52 dmitry Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -53,6 +53,7 @@ &authid, EOAC_NONE }; + php_com_initialize(TSRMLS_C); obj = CDNO_FETCH(object); if (FAILURE == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, @@ -294,6 +295,7 @@ HRESULT res; OLECHAR *module = NULL; + php_com_initialize(TSRMLS_C); if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|l", &module_name, &module_name_len, &code_page)) { php_com_throw_exception(E_INVALIDARG, "Invalid arguments!" TSRMLS_CC); @@ -660,6 +662,7 @@ ZEND_WRONG_PARAM_COUNT(); } + php_com_initialize(TSRMLS_C); if (CoCreateGuid(&retval) == S_OK && StringFromCLSID(&retval, &guid_string) == S_OK) { Z_TYPE_P(return_value) = IS_STRING; Z_STRVAL_P(return_value) = php_com_olestring_to_string(guid_string, &Z_STRLEN_P(return_value), CP_ACP, 0); @@ -688,6 +691,7 @@ RETURN_FALSE; } + php_com_initialize(TSRMLS_C); obj = CDNO_FETCH(object); if (sink && Z_TYPE_P(sink) == IS_ARRAY) { @@ -748,6 +752,7 @@ RETURN_FALSE; } + php_com_initialize(TSRMLS_C); if (Z_TYPE_P(arg1) == IS_OBJECT) { CDNO_FETCH_VERIFY(obj, arg1); } else { @@ -778,6 +783,7 @@ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|l", &timeoutms) == FAILURE) RETURN_FALSE; + php_com_initialize(TSRMLS_C); result = MsgWaitForMultipleObjects(0, NULL, FALSE, timeoutms, QS_ALLINPUT); if (result == WAIT_OBJECT_0) { @@ -811,6 +817,7 @@ RETVAL_FALSE; + php_com_initialize(TSRMLS_C); pTL = php_com_load_typelib_via_cache(name, codepage, &cached TSRMLS_CC); if (pTL) { if (cached) { http://cvs.php.net/viewvc.cgi/php-src/ext/com_dotnet/com_dotnet.c?r1=1.14.2.1&r2=1.14.2.1.2.1&diff_format=u Index: php-src/ext/com_dotnet/com_dotnet.c diff -u php-src/ext/com_dotnet/com_dotnet.c:1.14.2.1 php-src/ext/com_dotnet/com_dotnet.c:1.14.2.1.2.1 --- php-src/ext/com_dotnet/com_dotnet.c:1.14.2.1 Sun Jan 1 12:50:00 2006 +++ php-src/ext/com_dotnet/com_dotnet.c Fri Nov 17 11:40:52 2006 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: com_dotnet.c,v 1.14.2.1 2006/01/01 12:50:00 sniper Exp $ */ +/* $Id: com_dotnet.c,v 1.14.2.1.2.1 2006/11/17 11:40:52 dmitry Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -193,6 +193,7 @@ char *where = ""; IUnknown *unk = NULL; + php_com_initialize(TSRMLS_C); if (COMG(dotnet_runtime_stuff) == NULL) { hr = dotnet_init(&where TSRMLS_CC); if (FAILED(hr)) { http://cvs.php.net/viewvc.cgi/php-src/ext/com_dotnet/com_handlers.c?r1=1.30.2.5.2.2&r2=1.30.2.5.2.3&diff_format=u Index: php-src/ext/com_dotnet/com_handlers.c diff -u php-src/ext/com_dotnet/com_handlers.c:1.30.2.5.2.2 php-src/ext/com_dotnet/com_handlers.c:1.30.2.5.2.3 --- php-src/ext/com_dotnet/com_handlers.c:1.30.2.5.2.2 Fri Oct 6 12:23:30 2006 +++ php-src/ext/com_dotnet/com_handlers.c Fri Nov 17 11:40:52 2006 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: com_handlers.c,v 1.30.2.5.2.2 2006/10/06 12:23:30 edink Exp $ */ +/* $Id: com_handlers.c,v 1.30.2.5.2.3 2006/11/17 11:40:52 dmitry Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -664,6 +664,7 @@ php_com_dotnet_object *obj; zend_object_value retval; + php_com_initialize(TSRMLS_C); obj = emalloc(sizeof(*obj)); memset(obj, 0, sizeof(*obj)); http://cvs.php.net/viewvc.cgi/php-src/ext/com_dotnet/com_variant.c?r1=1.11.2.2.2.1&r2=1.11.2.2.2.2&diff_format=u Index: php-src/ext/com_dotnet/com_variant.c diff -u php-src/ext/com_dotnet/com_variant.c:1.11.2.2.2.1 php-src/ext/com_dotnet/com_variant.c:1.11.2.2.2.2 --- php-src/ext/com_dotnet/com_variant.c:1.11.2.2.2.1 Mon Nov 13 15:33:26 2006 +++ php-src/ext/com_dotnet/com_variant.c Fri Nov 17 11:40:52 2006 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: com_variant.c,v 1.11.2.2.2.1 2006/11/13 15:33:26 iliaa Exp $ */ +/* $Id: com_variant.c,v 1.11.2.2.2.2 2006/11/17 11:40:52 dmitry Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -280,6 +280,7 @@ return; } + php_com_initialize(TSRMLS_C); if (ZEND_NUM_ARGS() == 3) { obj->code_page = codepage; }
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php