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

Reply via email to