It basically works in the following way:
- the module refuses to be loaded by dl() [MODULE_TEMPORARY], so
only loading from php.ini is allowed [MODULE_PERSISTENT],
- the module NULLs its dlopen() handle in its shutdown phase, so module_destructor() will not dlclose() it.
Feedback, anyone ?
-- Ard
Index: interbase.c =================================================================== RCS file: /repository/php-src/ext/interbase/interbase.c,v retrieving revision 1.91.2.27 diff -u -r1.91.2.27 interbase.c --- interbase.c 7 Jan 2004 09:44:21 -0000 1.91.2.27 +++ interbase.c 20 Jan 2004 22:58:57 -0000 @@ -536,6 +536,12 @@
PHP_MINIT_FUNCTION(ibase) { + if (type == MODULE_TEMPORARY) + { + _php_ibase_module_error("Per request loading not supported by this module. Try loading it from php.ini instead"); + return FAILURE; + } + ZEND_INIT_MODULE_GLOBALS(ibase, php_ibase_init_globals, NULL); REGISTER_INI_ENTRIES(); @@ -594,6 +600,12 @@ PHP_MSHUTDOWN_FUNCTION(ibase) { + zend_module_entry *ibase_entry; + if (SUCCESS == zend_hash_find(&module_registry, ibase_module_entry.name, strlen(ibase_module_entry.name) +1, (void*) &ibase_entry)) + { + ibase_entry->handle = NULL; + } + UNREGISTER_INI_ENTRIES(); return SUCCESS; }
-- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php