Hi Michael, Making dl() work on threaded platforms would be nice. Illustrating your idea with a patch would be very helpful.
Edin Michael Vergoz wrote: > Hi > I am currently developing a kind of application server based on PHP > language. > I use modifications I made on SAPI embed/. > I use threads massively. > > In my application design, every thread can load different PHP modules. In > practise, modules are loaded just before php_request_startup() and they are > unloaded after php_request_shutdown() > > The problem I face is that I randomly receive PHP warnings : > <br /> > <b>Warning</b>: Module 'X7V3' already loaded in <b>Unknown</b> on line > <b>0</b><br /> > <br /> > <b>Warning</b>: Function registration failed - duplicate name - > XXXXXXXXXXXXXXXXXX in <b>Unknown</b> on line <b>0</b><br /> > <br /> > <b>Warning</b>: X7V3: Unable to register functions, unable to load in > <b>Unknown</b> on line <b>0</b><br / > > I looked at Zend/zend_API.c and I realized that 2 variables, "module_count" > and "module_registry", are not thread safe and that there is a comment > recomending mutex use for these 2 variables. > > I had asked for a Feature/Change request on bugs.php.net (#40668) but it has > been closed :s > > Then I learnt (thank you Tony) that dl() function is deactivated in ZTS > mode and I also learnt from Tony that this kind of problem was not a > priority ... > > I think it is important to settle this problem at least for IIS and Apache > Threadpool/Worker servers. > > At last, I would like to share my view on ZTS vs mutex use : > > Mutex : > pros : uses slightly less memory > cons : does not give possibility to create module spaces by thread - uses > more processor resource (as there is a mutualized lock for various threads) > > ZTS : > pros : possibility to create module spaces - less processor > cons : slight impact on memory > > This is why I propose to use a ZTS resource instead of mutex to make > "module_registry" thread safe. > > The use of ZTS resources will give a thread the ability to have its own > module HashTable. > > In both cases (mutex or ZTS resource), we will be able to reactivate the > dl() function in ZTS mode. > > I propose to develop the ZTS version resource. Or shall I let you do it ? > > Kind regards > > Michael Vergoz -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php