Re: [PATCH] Automatic module globals management
| From: | Steph Fox | Date: | Fri, 09 Jun 2006 17:31:37 +0000 |
| Subject: | Re: [PATCH] Automatic module globals management | ||
| References: | 1 2 3 4 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-24048@lists.php.net to get a copy of this message | ||
My comments went something along the lines of 'well if it's going in can we please apply a fix for the problem this was supposed to fix in the first place, because it isn't an answer to that problem'. I'd still personally rather it didn't, but I'm happy so long as we get an actual fix in there rather than a temporary pain-in-the-ass bug we all have to work around for the next two years.
You're right, Steph's comments threw me off a bit there, but after reconsidering the patch in detail I think it should be fine for 5.2, so go ahead and commit it. On 8-Jun-06, at 7:44 PM, Andi Gutmans wrote:Why so? It doesn't affect any compatibility. At 02:31 PM 6/8/2006, Ilia Alshanetsky wrote:Ilia AlshanetskyThe patch is good, but I think this change maybe a bit too extreme for PHP 5.2 On 8-Jun-06, at 8:15 AM, Dmitry Stogov wrote:Hi, The attached patch (for PHP_5_2) implements automatic management of module globals. The problem that module globals must be unregistered before extension unloading, because "globls_dtor" function is unloaded together with extension and cannot be called. To solve this problem extension writers now use the following pattern: PHP_MSHUTDOWN_FUNCTION(mod_name) { -#ifdef ZTSIlia Alshanetsky- ts_free_id(mod_name_globals_id);-#else- mod_name_globals_dtor(&mod_name_globals TSRMLS_CC);-#endif With my patch, extension writers should just extend module descriptor with globals descriptor and ctor/dtor callbacks.PHP_RSHUTDOWN(mod_name), PHP_MINFO(mod_name), NO_VERSION_YET, - STANDARD_MODULE_PROPERTIES + NULL, + ZEND_MG(mod_name), + ZEND_MGCTOR(mod_name), + ZEND_MGCTOR(mod_name), + STANDARD_MODULE_PROPERTIES_EX2}; Old extensions are source compatible and may work without modification. The patch modifies only several extensions, but will modify others too. I like commit the patch into HEAD and PHP_5_2. Any objections, additional ideas? Thanks. Dmitry. <zts_globals-2.diff.txt>